009_createUserMessagesTable.ts 1.2 KB

123456789101112131415161718192021222324252627
  1. import type { MigrationLiveDefinition } from '@d8d-appcontainer/types'
  2. import { DeleteStatus, MessageStatus } from "../../client/share/types.ts";
  3. const createUserMessagesTable: MigrationLiveDefinition = {
  4. name: "create_user_messages_table",
  5. up: async (api) => {
  6. await api.schema.createTable('user_messages', (table) => {
  7. table.increments('id').primary().comment('关联ID');
  8. table.integer('user_id').unsigned().references('id').inTable('users').onDelete('CASCADE').comment('用户ID');
  9. table.integer('message_id').unsigned().references('id').inTable('messages').onDelete('CASCADE').comment('消息ID');
  10. table.integer('status').defaultTo(MessageStatus.UNREAD).comment('阅读状态(0=未读,1=已读)');
  11. table.integer('is_deleted').defaultTo(DeleteStatus.NOT_DELETED).comment('删除状态(0=未删除,1=已删除)');
  12. table.timestamp('read_at').nullable().comment('阅读时间');
  13. table.timestamps(true, true);
  14. // 添加复合索引
  15. table.index(['user_id', 'status']);
  16. table.index(['user_id', 'is_deleted']);
  17. table.unique(['user_id', 'message_id']);
  18. });
  19. },
  20. down: async (api) => {
  21. await api.schema.dropTable('user_messages');
  22. }
  23. }
  24. export default createUserMessagesTable;