refactor(database): migrate to new modular database layer and unify data access
All checks were successful
Frontend CI / build-and-push-web (push) Successful in 2m44s
Frontend CI / ota-android (push) Successful in 12m51s
Frontend CI / build-android-apk (push) Successful in 1h1m26s

- Remove legacy database.ts, LocalDataSource.ts, and MessageRepository.ts
- Create new src/database/ module with messageRepository, userCacheRepository, conversationRepository, and groupCacheRepository
- Update all consumers to import from @/database instead of services/database
- Add web platform blur handling for modal components to fix focus issues
- Flatten SystemMessageItem and NotificationsScreen styles for consistent design
- Add draggable slider in ChatSettingsScreen and dynamic font size support
- Introduce 9 new chat color themes
- Add profile screens for about, terms, and privacy policy with navigation routes
- Add policy links to login and registration screens
- Fix post share URL format from /posts/ to /post/
This commit is contained in:
lafay
2026-04-04 08:01:45 +08:00
parent 189b977fac
commit 82c2970a85
76 changed files with 3382 additions and 2000 deletions

View File

@@ -0,0 +1,57 @@
import type { SQLiteDatabase } from 'expo-sqlite';
import {
CREATE_MESSAGES_TABLE,
CREATE_MESSAGES_INDEXES,
MIGRATE_MESSAGES_TABLE,
} from './MessageSchema';
import {
CREATE_CONVERSATIONS_TABLE,
CREATE_CONVERSATION_CACHE_TABLE,
CREATE_CONVERSATION_LIST_CACHE_TABLE,
MIGRATE_CONVERSATIONS_TABLE,
} from './ConversationSchema';
import {
CREATE_USERS_TABLE,
CREATE_CURRENT_USER_CACHE_TABLE,
} from './UserSchema';
import {
CREATE_GROUPS_TABLE,
CREATE_GROUP_MEMBERS_TABLE,
CREATE_GROUP_INDEXES,
} from './GroupSchema';
import {
CREATE_POSTS_CACHE_TABLE,
} from './PostSchema';
export async function runMigrations(db: SQLiteDatabase): Promise<void> {
if (typeof window !== 'undefined') {
try {
await db.execAsync(`PRAGMA locking_mode = EXCLUSIVE;`);
await db.execAsync(`PRAGMA journal_mode = MEMORY;`);
await db.execAsync(`PRAGMA temp_store = MEMORY;`);
console.log('[MigrationManager] Web: 已设置 EXCLUSIVE locking + MEMORY journal/temp 模式');
} catch (e) {
console.warn('[MigrationManager] 设置 PRAGMA 失败:', e);
}
}
await db.execAsync(CREATE_MESSAGES_TABLE);
await db.execAsync(CREATE_CONVERSATIONS_TABLE);
await db.execAsync(CREATE_CONVERSATION_CACHE_TABLE);
await db.execAsync(CREATE_CONVERSATION_LIST_CACHE_TABLE);
await db.execAsync(CREATE_USERS_TABLE);
await db.execAsync(CREATE_CURRENT_USER_CACHE_TABLE);
await db.execAsync(CREATE_GROUPS_TABLE);
await db.execAsync(CREATE_GROUP_MEMBERS_TABLE);
await db.execAsync(CREATE_POSTS_CACHE_TABLE);
for (const indexSql of CREATE_MESSAGES_INDEXES) {
await db.execAsync(indexSql);
}
for (const indexSql of CREATE_GROUP_INDEXES) {
await db.execAsync(indexSql);
}
await MIGRATE_MESSAGES_TABLE(db);
await MIGRATE_CONVERSATIONS_TABLE(db);
}