Files
pocket-id/frontend/src/lib/services/user-service.ts
2025-01-11 20:32:22 +01:00

55 lines
1.4 KiB
TypeScript

import type { Paginated, SearchPaginationSortRequest } from '$lib/types/pagination.type';
import type { User, UserCreate } from '$lib/types/user.type';
import APIService from './api-service';
export default class UserService extends APIService {
async list(options?: SearchPaginationSortRequest) {
const res = await this.api.get('/users', {
params: options
});
return res.data as Paginated<User>;
}
async get(id: string) {
const res = await this.api.get(`/users/${id}`);
return res.data as User;
}
async getCurrent() {
const res = await this.api.get('/users/me');
return res.data as User;
}
async create(user: UserCreate) {
const res = await this.api.post('/users', user);
return res.data as User;
}
async update(id: string, user: UserCreate) {
const res = await this.api.put(`/users/${id}`, user);
return res.data as User;
}
async updateCurrent(user: UserCreate) {
const res = await this.api.put('/users/me', user);
return res.data as User;
}
async remove(id: string) {
await this.api.delete(`/users/${id}`);
}
async createOneTimeAccessToken(userId: string, expiresAt: Date) {
const res = await this.api.post(`/users/${userId}/one-time-access-token`, {
userId,
expiresAt
});
return res.data.token;
}
async exchangeOneTimeAccessToken(token: string) {
const res = await this.api.post(`/one-time-access-token/${token}`);
return res.data as User;
}
}