Skip to content

Commit 4d1d95a

Browse files
committed
Setup Users and Organizations api services
1 parent 68808b7 commit 4d1d95a

File tree

4 files changed

+94
-8
lines changed

4 files changed

+94
-8
lines changed

src/_api/organizations.ts

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,54 @@
1-
const accountsService = {}
1+
import { AxiosResponse } from 'axios'
2+
import Organization, {
3+
OrganizationSubmissionData,
4+
OrganizationId,
5+
} from '_types/Organization'
6+
import apiClient from './client'
27

3-
export default accountsService
8+
export interface OrganizationsService {
9+
getOne(organizationId: OrganizationId): Promise<Organization>
10+
getList(params: any): Promise<OrganizationsListResponse>
11+
create(organization: OrganizationSubmissionData): Promise<Organization>
12+
update(
13+
organizationId: OrganizationId,
14+
organization: OrganizationSubmissionData,
15+
): Promise<Organization>
16+
remove(organizationId: OrganizationId): Promise<any>
17+
}
18+
19+
export interface OrganizationsListResponse {
20+
organizations: Organization[]
21+
count: number
22+
}
23+
24+
const OrganizationsService: OrganizationsService = {
25+
getOne(organizationId) {
26+
return apiClient
27+
.get(`/organizations/${organizationId}`)
28+
.then((res: AxiosResponse<Organization>) => res.data)
29+
},
30+
getList(params: any) {
31+
return apiClient
32+
.get(`/organizations`, {
33+
params,
34+
})
35+
.then((res: AxiosResponse<OrganizationsListResponse>) => res.data)
36+
},
37+
create(organization: OrganizationSubmissionData) {
38+
return apiClient
39+
.post(`/organizations`, organization)
40+
.then((res: AxiosResponse<Organization>) => res.data)
41+
},
42+
update(organizationId, organization) {
43+
return apiClient
44+
.put(`/organizations/${organizationId}`, organization)
45+
.then((res: AxiosResponse<Organization>) => res.data)
46+
},
47+
remove(organizationId) {
48+
return apiClient
49+
.delete(`/organizations/${organizationId}`)
50+
.then((res: AxiosResponse<any>) => res.data)
51+
},
52+
}
53+
54+
export default OrganizationsService

src/_api/users.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
import { AxiosResponse } from 'axios'
2-
import User, { UserId } from '_types/User'
2+
import User, { UserSubmissionData, UserId } from '_types/User'
33
import apiClient from './client'
44

55
export interface UsersService {
66
getProfile(): Promise<User>
77
getOne(userId: UserId): Promise<User>
8+
getList(params: any): Promise<UsersListResponse>
9+
create(user: UserSubmissionData): Promise<User>
10+
update(userId: UserId, user: UserSubmissionData): Promise<User>
11+
remove(userId: UserId): Promise<any>
12+
}
13+
14+
export interface UsersListResponse {
15+
users: User[]
16+
count: number
817
}
918

1019
const usersService: UsersService = {
@@ -14,6 +23,26 @@ const usersService: UsersService = {
1423
getOne(userId) {
1524
return apiClient.get(`/users/${userId}`).then((res: AxiosResponse<User>) => res.data)
1625
},
26+
getList(params: any) {
27+
return apiClient
28+
.get(`/users`, {
29+
params,
30+
})
31+
.then((res: AxiosResponse<UsersListResponse>) => res.data)
32+
},
33+
create(user: UserSubmissionData) {
34+
return apiClient.post(`/users`, user).then((res: AxiosResponse<User>) => res.data)
35+
},
36+
update(userId, user) {
37+
return apiClient
38+
.put(`/users/${userId}`, user)
39+
.then((res: AxiosResponse<User>) => res.data)
40+
},
41+
remove(userId) {
42+
return apiClient
43+
.delete(`/users/${userId}`)
44+
.then((res: AxiosResponse<any>) => res.data)
45+
},
1746
}
1847

1948
export default usersService

src/_types/Organization.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ export interface OrganizationPlan {
88
features?: {}
99
}
1010

11-
export default interface Organization {
12-
id: OrganizationId
11+
export interface OrganizationSubmissionData {
1312
name: string
14-
username?: string | null
13+
username?: string
14+
}
15+
16+
export default interface Organization extends OrganizationSubmissionData {
17+
id: OrganizationId
1518
plan: OrganizationPlan
1619
users?: User[]
1720
organizationToUsers?: OrganizationToUser[]

src/_types/User.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ export type UserId = number
77
// Each user can have only one global role
88
export type UserGlobalRole = 'admin' | 'support' | 'member'
99

10-
export default interface User {
11-
id: UserId
10+
export interface UserSubmissionData {
1211
firstName?: string
1312
lastName?: string
1413
displayName?: string
@@ -17,6 +16,10 @@ export default interface User {
1716
password?: string
1817
avatarUrl?: string
1918
globalRole?: UserGlobalRole
19+
}
20+
21+
export default interface User extends UserSubmissionData {
22+
id: UserId
2023
organizations?: Organization[]
2124
userToOrganizations?: OrganizationToUser[]
2225
}

0 commit comments

Comments
 (0)