1
0
forked from boos/BoosAPI

merge: reconcile migrate bootstrap with duplicate-column recovery

This commit is contained in:
ciat-777
2026-03-14 19:12:23 +08:00
17 changed files with 1601 additions and 357 deletions
+6 -1
View File
@@ -30,7 +30,7 @@ type RecoveryMigrationRecord = MigrationRecord & {
tag: string;
};
const VERIFIED_BOOTSTRAP_TAG = '0004_sorting_preferences';
const VERIFIED_BOOTSTRAP_TAG = '0007_account_token_group';
const VERIFIED_SCHEMA_MARKERS: SchemaMarker[] = [
{ table: 'sites' },
{ table: 'settings' },
@@ -47,8 +47,13 @@ const VERIFIED_SCHEMA_MARKERS: SchemaMarker[] = [
{ table: 'sites', column: 'sort_order' },
{ table: 'accounts', column: 'is_pinned' },
{ table: 'accounts', column: 'sort_order' },
// 0006: site_disabled_models table
{ table: 'site_disabled_models' },
// 0007: token_group column on account_tokens
{ table: 'account_tokens', column: 'token_group' },
];
function resolveSqliteDbPath(): string {
const raw = (config.dbUrl || '').trim();
if (!raw) return resolve(`${config.dataDir}/hub.db`);
+10
View File
@@ -21,6 +21,16 @@ export const sites = sqliteTable('sites', {
statusIdx: index('sites_status_idx').on(table.status),
}));
export const siteDisabledModels = sqliteTable('site_disabled_models', {
id: integer('id').primaryKey({ autoIncrement: true }),
siteId: integer('site_id').notNull().references(() => sites.id, { onDelete: 'cascade' }),
modelName: text('model_name').notNull(),
createdAt: text('created_at').default(sql`(datetime('now'))`),
}, (table) => ({
siteModelUnique: uniqueIndex('site_disabled_models_site_model_unique').on(table.siteId, table.modelName),
siteIdIdx: index('site_disabled_models_site_id_idx').on(table.siteId),
}));
export const accounts = sqliteTable('accounts', {
id: integer('id').primaryKey({ autoIncrement: true }),
siteId: integer('site_id').notNull().references(() => sites.id, { onDelete: 'cascade' }),