Skip to content

Commit 0761499

Browse files
committed
Merge branch 'master' of github.com:massCodeIO/massCode
2 parents 88e874c + ee52846 commit 0761499

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

src/main/db/index.ts

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ const isDev = process.env.NODE_ENV === 'development'
1414
let db: Database.Database | null = null
1515
let backupTimer: NodeJS.Timeout | null = null
1616

17+
function tableExists(db: Database.Database, table: string): boolean {
18+
const row = db
19+
.prepare(
20+
`
21+
SELECT name
22+
FROM sqlite_master
23+
WHERE type='table' AND name=?
24+
`,
25+
)
26+
.get(table)
27+
return !!row
28+
}
29+
1730
export function useDB() {
1831
if (db)
1932
return db
@@ -144,15 +157,26 @@ export function clearDB() {
144157
try {
145158
const db = useDB()
146159
const stmt = db.transaction(() => {
147-
// Сначала удаляем записи из таблиц со внешними ключами
148-
db.prepare('DELETE FROM snippet_tags').run()
149-
db.prepare('DELETE FROM snippet_contents').run()
150-
db.prepare('DELETE FROM snippets').run()
151-
// Затем удаляем записи из основных таблиц
152-
db.prepare('DELETE FROM tags').run()
153-
db.prepare('DELETE FROM folders').run()
154-
// Сбрасываем автоинкрементные счетчики, чтобы id начинались с 1
155-
db.prepare('DELETE FROM sqlite_sequence').run()
160+
const tables = [
161+
// Таблицы со внешними ключами должны быть первыми
162+
'snippet_tags',
163+
'snippet_contents',
164+
'snippets',
165+
// Остальные таблицы можно удалить в любом порядке
166+
'tags',
167+
'folders',
168+
]
169+
170+
for (const table of tables) {
171+
if (tableExists(db, table)) {
172+
db.prepare(`DELETE FROM ${table}`).run()
173+
}
174+
}
175+
176+
// Сброс автоинкремента — тоже только если таблица есть
177+
if (tableExists(db, 'sqlite_sequence')) {
178+
db.prepare('DELETE FROM sqlite_sequence').run()
179+
}
156180
})
157181

158182
stmt()

src/main/db/migrate.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ export function migrateJsonToSqlite(jsonData: JSONDB) {
4848
// Миграция папок
4949
jsonData.folders.forEach((folder) => {
5050
const result = insertFolderStmt.run(
51-
folder.name,
51+
folder.name || 'Untitled Folder',
5252
folder.defaultLanguage || 'plain_text',
5353
null, // parentId обновим позже
5454
folder.isOpen ? 1 : 0,
55-
folder.createdAt,
56-
folder.updatedAt,
55+
folder.createdAt || Date.now(),
56+
folder.updatedAt || Date.now(),
5757
folder.icon || null,
5858
folder.index ?? 0,
5959
)
@@ -74,9 +74,9 @@ export function migrateJsonToSqlite(jsonData: JSONDB) {
7474
// Миграция тегов
7575
jsonData.tags.forEach((tag) => {
7676
const result = insertTagStmt.run(
77-
tag.name,
78-
tag.createdAt,
79-
tag.updatedAt,
77+
tag.name || 'Untitled Tag',
78+
tag.createdAt || Date.now(),
79+
tag.updatedAt || Date.now(),
8080
)
8181
tagIdMap[tag.id] = Number(result.lastInsertRowid)
8282
})
@@ -86,13 +86,13 @@ export function migrateJsonToSqlite(jsonData: JSONDB) {
8686
// Определяем новый id папки для сниппета
8787
const mappedFolderId = folderIdMap[snippet.folderId] || null
8888
const result = insertSnippetStmt.run(
89-
snippet.name,
89+
snippet.name || 'Untitled Snippet',
9090
snippet.description || null,
9191
mappedFolderId,
9292
snippet.isDeleted ? 1 : 0,
9393
snippet.isFavorites ? 1 : 0,
94-
snippet.createdAt,
95-
snippet.updatedAt,
94+
snippet.createdAt || Date.now(),
95+
snippet.updatedAt || Date.now(),
9696
)
9797
const newSnippetId = Number(result.lastInsertRowid)
9898
snippetIdMap[snippet.id] = newSnippetId

0 commit comments

Comments
 (0)