import type { ObjectShortResponse, ObjectResponse, ObjectListResponse, CreateObjectRequest, UpdateObjectRequest } from '~/types/objects' export const useObjects = () => { const config = useRuntimeConfig() const apiBase = config.public.apiBase const getAuthHeaders = () => { const token = localStorage.getItem('auth_token') return token ? { Authorization: `Bearer ${token}` } : {} } const getList = async (params?: { page?: number page_size?: number type?: string q?: string status?: string is_active?: boolean }) => { return $fetch(`${apiBase}/objects`, { params }) } const getById = async (id: number) => { return $fetch(`${apiBase}/objects/${id}`) } const getMy = async (params?: { page?: number; page_size?: number; status?: string }) => { return $fetch(`${apiBase}/objects/my`, { headers: getAuthHeaders(), params }) } const getByOwner = async (ownerId: number, params?: { page?: number; page_size?: number }) => { return $fetch(`${apiBase}/objects/owner/${ownerId}`, { params }) } const search = async (q: string, params?: { page?: number; page_size?: number }) => { return $fetch(`${apiBase}/objects/search`, { params: { q, ...params } }) } const create = async (data: CreateObjectRequest) => { return $fetch(`${apiBase}/objects`, { method: 'POST', headers: getAuthHeaders(), body: data }) } const update = async (id: number, data: UpdateObjectRequest) => { return $fetch(`${apiBase}/objects/${id}`, { method: 'PUT', headers: getAuthHeaders(), body: data }) } const remove = async (id: number) => { return $fetch(`${apiBase}/objects/${id}`, { method: 'DELETE', headers: getAuthHeaders() }) } return { getList, getById, getMy, getByOwner, search, create, update, remove } }