Add chore service API
This commit is contained in:
72
frontend/src/api/chores.ts
Normal file
72
frontend/src/api/chores.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import api from './axios';
|
||||
|
||||
export interface Chore {
|
||||
id: number;
|
||||
title: string;
|
||||
description: string;
|
||||
room: string;
|
||||
frequency: 'daily' | 'weekly' | 'monthly' | 'once';
|
||||
status: 'pending' | 'in_progress' | 'completed' | 'skipped';
|
||||
assigned_to?: number;
|
||||
assigned_user?: {
|
||||
id: number;
|
||||
username: string;
|
||||
full_name: string;
|
||||
};
|
||||
due_date?: string;
|
||||
completed_at?: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface CreateChoreRequest {
|
||||
title: string;
|
||||
description?: string;
|
||||
room: string;
|
||||
frequency: 'daily' | 'weekly' | 'monthly' | 'once';
|
||||
assigned_to?: number;
|
||||
due_date?: string;
|
||||
}
|
||||
|
||||
export interface UpdateChoreRequest {
|
||||
title?: string;
|
||||
description?: string;
|
||||
room?: string;
|
||||
frequency?: 'daily' | 'weekly' | 'monthly' | 'once';
|
||||
status?: 'pending' | 'in_progress' | 'completed' | 'skipped';
|
||||
assigned_to?: number;
|
||||
due_date?: string;
|
||||
}
|
||||
|
||||
export const choreService = {
|
||||
async getChores(): Promise<Chore[]> {
|
||||
const response = await api.get<Chore[]>('/api/v1/chores');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getChore(id: number): Promise<Chore> {
|
||||
const response = await api.get<Chore>(`/api/v1/chores/${id}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async createChore(chore: CreateChoreRequest): Promise<Chore> {
|
||||
const response = await api.post<Chore>('/api/v1/chores', chore);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async updateChore(id: number, chore: UpdateChoreRequest): Promise<Chore> {
|
||||
const response = await api.put<Chore>(`/api/v1/chores/${id}`, chore);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async deleteChore(id: number): Promise<void> {
|
||||
await api.delete(`/api/v1/chores/${id}`);
|
||||
},
|
||||
|
||||
async completeChore(id: number): Promise<Chore> {
|
||||
const response = await api.put<Chore>(`/api/v1/chores/${id}`, {
|
||||
status: 'completed',
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user