first commit

This commit is contained in:
2026-05-29 10:23:25 +03:00
commit e4b25fe4b7
48 changed files with 9112 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
import api from './client';
import { User } from '@/lib/auth';
export interface Cat {
id: number;
image_url: string;
caption: string;
created_at: string;
user_id: number;
username: string;
user_points: number;
likes_count: number;
}
export interface AuthResponse {
token: string;
user: User;
}
export function register(username: string, password: string) {
return api.post<AuthResponse>('/auth/register', { username, password });
}
export function login(username: string, password: string) {
return api.post<AuthResponse>('/auth/login', { username, password });
}
export function getMe() {
return api.get<{ user: User }>('/auth/me');
}
export function getCats(page = 1) {
return api.get<{ cats: Cat[]; total: number; page: number; totalPages: number }>('/cats', { params: { page } });
}
export function getUserCats(userId: number) {
return api.get<{ cats: Cat[] }>(`/cats/user/${userId}`);
}
export function getCat(id: number) {
return api.get<{ cat: Cat }>(`/cats/${id}`);
}
export function uploadCat(formData: FormData) {
return api.post<{ cat: Cat }>('/cats', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
});
}
export function deleteCat(id: number) {
return api.delete(`/cats/${id}`);
}
export function likeCat(catId: number) {
return api.post<{ liked: boolean; likesCount: number; ownerPoints: number }>(`/likes/${catId}`);
}
export function unlikeCat(catId: number) {
return api.delete<{ liked: boolean; likesCount: number; ownerPoints: number }>(`/likes/${catId}`);
}
export function getLikeStatus(catId: number) {
return api.get<{ liked: boolean }>(`/likes/${catId}/status`);
}