---
sync_policy: engine_only
---
import { {{ModuleName}} } from './types';

/** {{moduleName}} 接口基础路径 */
const API_BASE = '/api/{{module_name}}s';

/**
 * {{ModuleName}} 服务层 — 封装 {{moduleName}} 模块的所有 API 调用。
 */
export const {{moduleName}}Service = {

  /**
   * 查询 {{moduleName}} 列表。
   * @returns {{moduleName}} 列表
   */
  async list(): Promise<{{ModuleName}}[]> {
    const res = await fetch(API_BASE);
    return res.json();
  },

  /**
   * 根据 ID 查询 {{moduleName}} 详情。
   * @param id 主键标识
   * @returns {{moduleName}} 对象
   */
  async getById(id: number): Promise<{{ModuleName}}> {
    const res = await fetch(`${API_BASE}/${id}`);
    return res.json();
  },

  /**
   * 创建 {{moduleName}}。
   * @param data 创建数据（部分字段可选）
   * @returns 创建后的 {{moduleName}} 对象
   */
  async create(data: Partial<{{ModuleName}}>): Promise<{{ModuleName}}> {
    const res = await fetch(API_BASE, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data),
    });
    return res.json();
  },

  /**
   * 更新 {{moduleName}}。
   * @param id   主键标识
   * @param data 更新数据（部分字段可选）
   * @returns 更新后的 {{moduleName}} 对象
   */
  async update(id: number, data: Partial<{{ModuleName}}>): Promise<{{ModuleName}}> {
    const res = await fetch(`${API_BASE}/${id}`, {
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data),
    });
    return res.json();
  },

  /**
   * 删除 {{moduleName}}。
   * @param id 主键标识
   */
  async delete(id: number): Promise<void> {
    await fetch(`${API_BASE}/${id}`, { method: 'DELETE' });
  },
};
