diff --git a/frontend/repositories/user/api.ts b/frontend/repositories/user/api.ts new file mode 100644 index 00000000..74ad1839 --- /dev/null +++ b/frontend/repositories/user/api.ts @@ -0,0 +1,16 @@ +import ApiService from '@/services/api.service' +import { UserItem } from '@/models/user' +import { UserItemListRepository, UserItemResponse } from './interface' + +export class FromApiUserItemListRepository implements UserItemListRepository { + constructor( + private readonly request = ApiService + ) {} + + async list(query: string): Promise { + const url = `/users?q=${query}` + const response = await this.request.get(url) + const responseItems: UserItemResponse[] = response.data + return responseItems.map(item => UserItem.valueOf(item)) + } +} diff --git a/frontend/repositories/user/interface.ts b/frontend/repositories/user/interface.ts new file mode 100644 index 00000000..323a25db --- /dev/null +++ b/frontend/repositories/user/interface.ts @@ -0,0 +1,11 @@ +import { UserItem } from '@/models/user' + +export interface UserItemResponse { + id: number, + username: string, + is_superuser: boolean +} + +export interface UserItemListRepository { + list(query: string): Promise +}