83 lines
2.5 KiB
TypeScript
83 lines
2.5 KiB
TypeScript
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),
|
|
])); |