import type { MigrationLiveDefinition } from '@d8d-appcontainer/types' import { DeleteStatus , EnableStatus} from "../../client/share/types.ts"; // 机柜服务器表迁移 const createRackServerTable: MigrationLiveDefinition = { name: "create_rack_server_table", up: async (api) => { await api.schema.createTable('rack_server', (table) => { table.increments('id').primary(); table.integer('rack_id').unsigned().notNullable().comment('关联的机柜ID') .references('id').inTable('rack_info').onDelete('CASCADE'); table.integer('asset_id').unsigned().notNullable().comment('关联的资产ID') .references('id').inTable('zichan_info').onDelete('CASCADE'); table.integer('start_position').notNullable().comment('设备安装的起始U位'); table.integer('size').defaultTo(1).comment('设备占用U数'); table.integer('server_type').unsigned().references('id').inTable('rack_server_type').onDelete('CASCADE').comment('服务器类型'); table.text('remark').comment('备注信息'); table.integer('is_disabled').defaultTo(EnableStatus.ENABLED).comment('是否禁用 (0否 1是)'); table.integer('is_deleted').defaultTo(DeleteStatus.NOT_DELETED).comment('是否被删除 (0否 1是)'); table.timestamps(true, true); // 添加索引 table.index('rack_id'); table.index('asset_id'); table.index('server_type'); table.index('is_disabled'); table.index('is_deleted'); // 添加唯一约束,一个资产只能放在一个机柜位置 // table.unique(['rack_id', 'asset_id']); }); }, down: async (api) => { await api.schema.dropTable('rack_server'); } }; export default createRackServerTable