019_createRackServerTable.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type { MigrationLiveDefinition } from '@d8d-appcontainer/types'
  2. import { DeleteStatus , EnableStatus} from "../../client/share/types.ts";
  3. // 机柜服务器表迁移
  4. const createRackServerTable: MigrationLiveDefinition = {
  5. name: "create_rack_server_table",
  6. up: async (api) => {
  7. await api.schema.createTable('rack_server', (table) => {
  8. table.increments('id').primary();
  9. table.integer('rack_id').unsigned().notNullable().comment('关联的机柜ID')
  10. .references('id').inTable('rack_info').onDelete('CASCADE');
  11. table.integer('asset_id').unsigned().notNullable().comment('关联的资产ID')
  12. .references('id').inTable('zichan_info').onDelete('CASCADE');
  13. table.integer('start_position').notNullable().comment('设备安装的起始U位');
  14. table.integer('size').defaultTo(1).comment('设备占用U数');
  15. table.integer('server_type').unsigned().references('id').inTable('rack_server_type').onDelete('CASCADE').comment('服务器类型');
  16. table.text('remark').comment('备注信息');
  17. table.integer('is_disabled').defaultTo(EnableStatus.ENABLED).comment('是否禁用 (0否 1是)');
  18. table.integer('is_deleted').defaultTo(DeleteStatus.NOT_DELETED).comment('是否被删除 (0否 1是)');
  19. table.timestamps(true, true);
  20. // 添加索引
  21. table.index('rack_id');
  22. table.index('asset_id');
  23. table.index('server_type');
  24. table.index('is_disabled');
  25. table.index('is_deleted');
  26. // 添加唯一约束,一个资产只能放在一个机柜位置
  27. // table.unique(['rack_id', 'asset_id']);
  28. });
  29. },
  30. down: async (api) => {
  31. await api.schema.dropTable('rack_server');
  32. }
  33. };
  34. export default createRackServerTable