/**
 * API-сервис для облачных проектов Кубикон CAD (Месяц 9 плана).
 * Бэкенд: storys-микросервис, префикс /kubikon-cad/...
 *
 * Это отдельная сущность от Kubikon3DService (Рублокс):
 *   Рублокс — игры (kubikon3d_projects)
 *   CAD     — параметрические модели (kubikon_cad_projects)
 */
import axios from 'axios';
import { STORYS_addres } from './API';

const api = axios.create({
    baseURL: STORYS_addres,
    timeout: 30000,
});

// JWT — для resolve_my_username на бэке (если когда-нибудь понадобится).
api.interceptors.request.use((config) => {
    try {
        const token = localStorage.getItem('Authorization');
        if (token) {
            config.headers = config.headers || {};
            config.headers.Authorization = token;
        }
    } catch (_) { /* ignore */ }
    return config;
});


// === CRUD ===

/** Создать новый проект.
 *  body: { user_id, title?, description?, document_data?, thumbnail? }
 *  ответ: serialize_full (включая id и document_data) */
export const createProject = (body) =>
    api.post('/kubikon-cad/projects', body);

/** Получить проект целиком (с document_data) — для открытия в редакторе.
 *  Только владельцу (user_id обязателен). */
export const getProject = (projectId, userId) =>
    api.get(`/kubikon-cad/projects/${projectId}`, {
        params: { user_id: userId },
    });

/** Обновить проект. body: { user_id, title?, description?, document_data?, thumbnail? }.
 *  Только владелец может. */
export const updateProject = (projectId, body) =>
    api.put(`/kubikon-cad/projects/${projectId}`, body);

/** Удалить проект. Только владелец. */
export const deleteProject = (projectId, userId) =>
    api.delete(`/kubikon-cad/projects/${projectId}`, {
        params: { user_id: userId },
    });

/** Список проектов пользователя (без document_data).
 *  ответ: { items: [...] }, отсортированный по updated_at desc. */
export const listUserProjects = (userId) =>
    api.get(`/kubikon-cad/users/${userId}/projects`);
