import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core'; import { randomUUID } from 'node:crypto'; export const cache = sqliteTable('cache', { key: text('key').primaryKey(), value: text('value').notNull(), expireAt: integer('expire_at').notNull(), createdAt: integer('created_at').notNull(), }); export const xhsNote = sqliteTable('xhs_note', { id: text('id').primaryKey(), title: text('title'), summary: text('summary'), description: text('description'), link: text('link'), data: text('data'), tags: text('tags'), status: text('status'), // 正常笔记,归档,禁止用户,删除,不相关 authorUrl: text('author_url'), cover: text('cover'), syncStatus: integer('sync_status').notNull(), syncAt: integer('sync_at').notNull(), star: integer('star'), userId: text('user_id'), pushedAt: integer('pushed_at'), createdAt: integer('created_at').notNull(), updatedAt: integer('updated_at').notNull(), deletedAt: integer('deleted_at'), }, (table) => ([ index('idx_xhs_note_user_id').on(table.userId), index('idx_xhs_note_tags').on(table.tags), ])); export const xhsUser = sqliteTable('xhs_user', { id: text('id').primaryKey(), xsec_token: text('xsec_token'), username: text('username'), nickname: text('nickname'), avatar: text('avatar'), title: text('title'), summary: text('summary'), description: text('description'), link: text('link'), data: text('data'), tags: text('tags'), bunTags: text('bun_tags'), followersCount: integer('followers_count'), followingCount: integer('following_count'), status: text('status'), // 笔记用户(从笔记中添加,没有获取具体详情) 正常用户,封禁,已删除 syncStatus: integer('sync_status').default(0).notNull(), syncAt: integer('sync_at').default(0).notNull(), star: integer('star'), // 标记 createdAt: integer('created_at').default(Date.now()).notNull(), updatedAt: integer('updated_at').default(Date.now()).notNull(), deletedAt: integer('deleted_at'), }, (table) => ([ index('idx_xhs_user_id').on(table.id), index('idx_xhs_user_tags').on(table.tags), index('idx_xhs_user_bun_tags').on(table.bunTags), ])); export const xhsTags = sqliteTable('xhs_tags', { id: text('id').primaryKey().default(randomUUID()), title: text('title').notNull(), description: text('description'), createdAt: integer('created_at').default(Date.now()).notNull(), updatedAt: integer('updated_at').default(Date.now()).notNull(), }, (table) => ([ index('idx_xhs_tags_title').on(table.title), ]));