From c5ade8f8d903b9eb0bded04ff5b7b1fef99f0610 Mon Sep 17 00:00:00 2001 From: Hironsan Date: Mon, 1 Mar 2021 08:03:49 +0900 Subject: [PATCH] Add user repository --- frontend/repositories/user/api.ts | 16 ++++++++++++++++ frontend/repositories/user/interface.ts | 11 +++++++++++ 2 files changed, 27 insertions(+) create mode 100644 frontend/repositories/user/api.ts create mode 100644 frontend/repositories/user/interface.ts 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 +}