api partially wired up
This commit is contained in:
parent
c66e815810
commit
51dc7ef3a2
20191
frontend/package-lock.json
generated
20191
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
@ -8,7 +8,7 @@ import { users } from './api/data/users'
|
||||||
import './scss/app.scss'
|
import './scss/app.scss'
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
const api = new Api({ mock: true, users })
|
const api = new Api({ mock: true, users, baseURL: '/api' })
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { User } from '../../types'
|
||||||
const userRecords: User[] = [
|
const userRecords: User[] = [
|
||||||
{
|
{
|
||||||
id: '42',
|
id: '42',
|
||||||
username: 'TestUser42',
|
name: 'TestUser42',
|
||||||
email: 'testuser@email.com',
|
email: 'testuser@email.com',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,22 +1,25 @@
|
||||||
import Axios, { AxiosInstance } from 'axios'
|
import Axios, { AxiosInstance } from 'axios'
|
||||||
import { User } from '../types'
|
import { Stack, Transaction, User, uuid } from '../types'
|
||||||
import { JWT, setJWT, wipeJWT } from '../utils/jwt'
|
import { JWT, setJWT, wipeJWT } from '../utils/jwt'
|
||||||
import { DataBuddy } from '@dank-inc/data-buddy'
|
import { DataBuddy } from '@dank-inc/data-buddy'
|
||||||
|
import { users } from './data/users'
|
||||||
|
|
||||||
export type ApiParams = {
|
export type ApiParams = {
|
||||||
baseURL?: string
|
baseURL?: string
|
||||||
mock?: boolean
|
mock?: boolean
|
||||||
users: DataBuddy<User>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Api {
|
export interface Api {
|
||||||
mock?: boolean
|
mock?: boolean
|
||||||
users: DataBuddy<User>
|
users: DataBuddy<User>
|
||||||
|
accounts: DataBuddy<Account>
|
||||||
|
stacks: DataBuddy<Stack>
|
||||||
|
Transactions: DataBuddy<Transaction>
|
||||||
axios: AxiosInstance
|
axios: AxiosInstance
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Api {
|
export class Api {
|
||||||
constructor({ mock, users, baseURL }: ApiParams) {
|
constructor({ mock, baseURL }: ApiParams) {
|
||||||
this.mock = mock
|
this.mock = mock
|
||||||
this.users = users
|
this.users = users
|
||||||
this.axios = Axios.create({ baseURL })
|
this.axios = Axios.create({ baseURL })
|
||||||
|
@ -44,14 +47,53 @@ export class Api {
|
||||||
wipeJWT()
|
wipeJWT()
|
||||||
}
|
}
|
||||||
|
|
||||||
getUser = async (id: string) => {
|
getUser = async (id: uuid) => {
|
||||||
if (this.mock) return this.users.getOne(id)
|
if (this.mock) return this.users.getOne(id)
|
||||||
const { data } = await this.axios.get<User>(`users/${id}`)
|
const { data } = await this.axios.get<User>(`users/${id}`)
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getAccounts = async () => {
|
||||||
|
this.axios.get('accounts')
|
||||||
|
}
|
||||||
|
getAccount = async (id: uuid) => {
|
||||||
|
this.axios.get(`accounts/${id}`)
|
||||||
|
}
|
||||||
|
updateAccount = async (id: uuid, body: Partial<Account>) => {
|
||||||
|
const { data } = await this.axios.patch<Account>(`accounts/${id}`, body)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
createAccount = async () => {}
|
||||||
|
deleteAccount = async () => {}
|
||||||
|
|
||||||
|
getStacks = async () => {
|
||||||
|
this.axios.get('stacks')
|
||||||
|
}
|
||||||
|
updateStack = async (id: uuid, body: Partial<Stack>) => {
|
||||||
|
const { data } = await this.axios.patch<Stack>(`stacks/${id}`, body)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
createStack = async () => {}
|
||||||
|
deleteStack = async () => {}
|
||||||
|
|
||||||
|
getTransactions = async () => {
|
||||||
|
const { data } = await this.axios.get('transactions')
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
updateTransaction = async (id: uuid, body: Partial<Transaction>) => {
|
||||||
|
const { data } = await this.axios.patch<Transaction>(
|
||||||
|
`transactions/${id}`,
|
||||||
|
body,
|
||||||
|
)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
createTransaction = async (body: Omit<Transaction, 'id'>) => {
|
||||||
|
const { data } = await this.axios.post<Transaction>('transactions', body)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
deleteTransaction = async () => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const logOut = async () => {
|
export const logOut = async () => {
|
||||||
wipeJWT()
|
wipeJWT()
|
||||||
// axios -> delete session?
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
@import '~antd/dist/antd.dark.css';
|
@import '~antd/dist/antd.dark.css';
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
||||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
||||||
sans-serif;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
|
||||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
|
||||||
monospace;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,34 @@
|
||||||
|
export type uuid = string
|
||||||
|
|
||||||
export type User = {
|
export type User = {
|
||||||
id: string
|
id: uuid
|
||||||
username: string
|
name: string
|
||||||
email: string
|
email: string
|
||||||
|
// password: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Account = {
|
||||||
|
id: uuid
|
||||||
|
users?: uuid[]
|
||||||
|
name: string
|
||||||
|
details: string
|
||||||
|
income: string
|
||||||
|
expenses: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Stack = {
|
||||||
|
id: uuid
|
||||||
|
account: uuid //'38485982-87f3-4a11-a963-2202983809e3'
|
||||||
|
name: string // 'House Fund'
|
||||||
|
details: string //'buy furniture'
|
||||||
|
amount: number // '200.00'
|
||||||
|
transactions: Transaction[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Transaction = {
|
||||||
|
id: uuid
|
||||||
|
stack: uuid // '0058cece-3ff3-4ee1-b71d-075a0bc73bc0'
|
||||||
|
details: string // 'by ghetto couch off Kijiji'
|
||||||
|
amount: number // '30.44'
|
||||||
|
created_at: string // '2021-04-15T00:02:45.096071Z'
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user