'use strict';

var drizzleOrm = require('drizzle-orm');
var pgCore = require('drizzle-orm/pg-core');

// src/mmd/server/drizzle-schema.ts
var mmdPlaylists = pgCore.pgTable(
  "mmd_playlists",
  {
    /** 主键ID */
    id: pgCore.uuid("id").primaryKey().defaultRandom(),
    /** 播放列表名称 */
    name: pgCore.varchar("name", { length: 255 }).notNull(),
    /** 播放列表描述 */
    description: pgCore.text("description"),
    /** 是否启用列表循环 */
    loop: pgCore.boolean("loop").notNull().default(false),
    /** 预加载策略: none, next, all */
    preloadStrategy: pgCore.varchar("preload_strategy", { length: 20 }).notNull().default("none"),
    /** 是否自动播放 */
    autoPlay: pgCore.boolean("auto_play").notNull().default(false),
    /** 播放列表缩略图文件ID (关联 file_metadata.id) */
    thumbnailFileId: pgCore.uuid("thumbnail_file_id"),
    /** 播放列表状态: draft, published, archived */
    status: pgCore.varchar("status", { length: 20 }).notNull().default("draft"),
    /** 显示顺序 */
    sortOrder: pgCore.integer("sort_order").notNull().default(0),
    /** 额外配置（JSON格式，存储舞台配置等） */
    config: pgCore.json("config"),
    /** 创建者ID */
    createdBy: pgCore.varchar("created_by", { length: 255 }).notNull(),
    /** 创建时间 */
    createdAt: pgCore.timestamp("created_at").defaultNow().notNull(),
    /** 更新时间 */
    updatedAt: pgCore.timestamp("updated_at").defaultNow().notNull(),
    /** 删除时间（软删除） */
    deletedAt: pgCore.timestamp("deleted_at")
  },
  (table) => ({
    /** 按状态查询的索引 */
    statusIndex: pgCore.index("mmd_playlists_status_idx").on(table.status),
    /** 按创建者查询的索引 */
    createdByIndex: pgCore.index("mmd_playlists_created_by_idx").on(table.createdBy),
    /** 按删除状态查询的索引 */
    deletedAtIndex: pgCore.index("mmd_playlists_deleted_at_idx").on(table.deletedAt),
    /** 按排序查询的索引 */
    sortOrderIndex: pgCore.index("mmd_playlists_sort_order_idx").on(table.sortOrder)
  })
);
var mmdPlaylistNodes = pgCore.pgTable(
  "mmd_playlist_nodes",
  {
    /** 主键ID */
    id: pgCore.uuid("id").primaryKey().defaultRandom(),
    /** 所属播放列表ID */
    playlistId: pgCore.uuid("playlist_id").references(() => mmdPlaylists.id, { onDelete: "cascade" }).notNull(),
    /** 节点名称 */
    name: pgCore.varchar("name", { length: 255 }).notNull(),
    /** 节点描述 */
    description: pgCore.text("description"),
    /** 是否启用节点循环 */
    loop: pgCore.boolean("loop").notNull().default(false),
    /** 预计时长（秒） */
    duration: pgCore.integer("duration"),
    /** 节点缩略图文件ID */
    thumbnailFileId: pgCore.uuid("thumbnail_file_id"),
    /** 显示顺序 */
    sortOrder: pgCore.integer("sort_order").notNull().default(0),
    /** 模型文件ID (关联 file_metadata.id) */
    modelFileId: pgCore.uuid("model_file_id").notNull(),
    /** 动作文件ID */
    motionFileId: pgCore.uuid("motion_file_id"),
    /** 相机动画文件ID */
    cameraFileId: pgCore.uuid("camera_file_id"),
    /** 音频文件ID */
    audioFileId: pgCore.uuid("audio_file_id"),
    /** 舞台模型文件ID */
    stageModelFileId: pgCore.uuid("stage_model_file_id"),
    /** 附加动作文件ID列表（JSON数组） */
    additionalMotionFileIds: pgCore.json("additional_motion_file_ids").$type(),
    /** 额外配置（JSON格式） */
    config: pgCore.json("config"),
    /** 创建时间 */
    createdAt: pgCore.timestamp("created_at").defaultNow().notNull(),
    /** 更新时间 */
    updatedAt: pgCore.timestamp("updated_at").defaultNow().notNull()
  },
  (table) => ({
    /** 按播放列表查询的索引 */
    playlistIndex: pgCore.index("mmd_playlist_nodes_playlist_idx").on(table.playlistId),
    /** 按排序查询的索引 */
    sortOrderIndex: pgCore.index("mmd_playlist_nodes_sort_order_idx").on(table.sortOrder),
    /** 按模型文件查询的索引 */
    modelFileIndex: pgCore.index("mmd_playlist_nodes_model_file_idx").on(table.modelFileId),
    /** 组合索引：播放列表+排序 */
    playlistSortIndex: pgCore.index("mmd_playlist_nodes_playlist_sort_idx").on(
      table.playlistId,
      table.sortOrder
    )
  })
);
var mmdResourceOptions = pgCore.pgTable(
  "mmd_resource_options",
  {
    /** 主键ID */
    id: pgCore.uuid("id").primaryKey().defaultRandom(),
    /** 资源名称 */
    name: pgCore.varchar("name", { length: 255 }).notNull(),
    /** 资源描述 */
    description: pgCore.text("description"),
    /** 资源类型: model, motion, camera, audio, stage */
    resourceType: pgCore.varchar("resource_type", { length: 20 }).notNull(),
    /** 文件ID (关联 file_metadata.id) */
    fileId: pgCore.uuid("file_id").notNull(),
    /** 缩略图文件ID */
    thumbnailFileId: pgCore.uuid("thumbnail_file_id"),
    /** 资源标签（JSON数组，用于分类和筛选） */
    tags: pgCore.json("tags").$type(),
    /** 显示顺序 */
    sortOrder: pgCore.integer("sort_order").notNull().default(0),
    /** 是否启用 */
    isActive: pgCore.boolean("is_active").notNull().default(true),
    /** 创建者ID */
    createdBy: pgCore.varchar("created_by", { length: 255 }).notNull(),
    /** 创建时间 */
    createdAt: pgCore.timestamp("created_at").defaultNow().notNull(),
    /** 更新时间 */
    updatedAt: pgCore.timestamp("updated_at").defaultNow().notNull()
  },
  (table) => ({
    /** 按资源类型查询的索引 */
    resourceTypeIndex: pgCore.index("mmd_resource_options_resource_type_idx").on(table.resourceType),
    /** 按文件ID查询的索引 */
    fileIdIndex: pgCore.index("mmd_resource_options_file_id_idx").on(table.fileId),
    /** 按活跃状态查询的索引 */
    isActiveIndex: pgCore.index("mmd_resource_options_is_active_idx").on(table.isActive),
    /** 按创建者查询的索引 */
    createdByIndex: pgCore.index("mmd_resource_options_created_by_idx").on(table.createdBy),
    /** 组合索引：资源类型+活跃状态+排序 */
    typeActiveSortIndex: pgCore.index("mmd_resource_options_type_active_sort_idx").on(
      table.resourceType,
      table.isActive,
      table.sortOrder
    )
  })
);
var mmdPresetItems = pgCore.pgTable(
  "mmd_preset_items",
  {
    /** 主键ID */
    id: pgCore.uuid("id").primaryKey().defaultRandom(),
    /** 预设名称 */
    name: pgCore.varchar("name", { length: 255 }).notNull(),
    /** 预设描述 */
    description: pgCore.text("description"),
    /** 缩略图文件ID */
    thumbnailFileId: pgCore.uuid("thumbnail_file_id"),
    /** 模型文件ID */
    modelFileId: pgCore.uuid("model_file_id").notNull(),
    /** 动作文件ID */
    motionFileId: pgCore.uuid("motion_file_id"),
    /** 相机动画文件ID */
    cameraFileId: pgCore.uuid("camera_file_id"),
    /** 音频文件ID */
    audioFileId: pgCore.uuid("audio_file_id"),
    /** 舞台模型文件ID */
    stageModelFileId: pgCore.uuid("stage_model_file_id"),
    /** 附加动作文件ID列表（JSON数组） */
    additionalMotionFileIds: pgCore.json("additional_motion_file_ids").$type(),
    /** 显示顺序 */
    sortOrder: pgCore.integer("sort_order").notNull().default(0),
    /** 是否启用 */
    isActive: pgCore.boolean("is_active").notNull().default(true),
    /** 预设标签（JSON数组） */
    tags: pgCore.json("tags").$type(),
    /** 创建者ID */
    createdBy: pgCore.varchar("created_by", { length: 255 }).notNull(),
    /** 创建时间 */
    createdAt: pgCore.timestamp("created_at").defaultNow().notNull(),
    /** 更新时间 */
    updatedAt: pgCore.timestamp("updated_at").defaultNow().notNull()
  },
  (table) => ({
    /** 按活跃状态查询的索引 */
    isActiveIndex: pgCore.index("mmd_preset_items_is_active_idx").on(table.isActive),
    /** 按排序查询的索引 */
    sortOrderIndex: pgCore.index("mmd_preset_items_sort_order_idx").on(table.sortOrder),
    /** 按创建者查询的索引 */
    createdByIndex: pgCore.index("mmd_preset_items_created_by_idx").on(table.createdBy),
    /** 按模型文件查询的索引 */
    modelFileIndex: pgCore.index("mmd_preset_items_model_file_idx").on(table.modelFileId)
  })
);
var mmdPlaylistsRelations = drizzleOrm.relations(mmdPlaylists, ({ many }) => ({
  nodes: many(mmdPlaylistNodes)
}));
var mmdPlaylistNodesRelations = drizzleOrm.relations(mmdPlaylistNodes, ({ one }) => ({
  playlist: one(mmdPlaylists, {
    fields: [mmdPlaylistNodes.playlistId],
    references: [mmdPlaylists.id]
  })
}));

exports.mmdPlaylistNodes = mmdPlaylistNodes;
exports.mmdPlaylistNodesRelations = mmdPlaylistNodesRelations;
exports.mmdPlaylists = mmdPlaylists;
exports.mmdPlaylistsRelations = mmdPlaylistsRelations;
exports.mmdPresetItems = mmdPresetItems;
exports.mmdResourceOptions = mmdResourceOptions;
//# sourceMappingURL=chunk-W35VTQAW.js.map
//# sourceMappingURL=chunk-W35VTQAW.js.map