1
1
import type { Bookmark , Folder } from './types'
2
2
3
- import { activeBookmarks , activeFolder , activeFolderBookmarks , tagFilter } from './dbStore'
3
+ import { activeBookmarks , activeFolder , activeFolderBookmarks , folders , tagFilter } from './dbStore'
4
4
import { log , wait } from 'fractils'
5
5
import { get } from 'svelte/store'
6
6
import db from './db'
@@ -16,11 +16,12 @@ export async function init_db() {
16
16
await wait ( 100 )
17
17
const id = localStorage . getItem ( 'lastActiveFolderId' )
18
18
19
- //? Update stores
19
+ //? Populate stores
20
20
let lastActiveFolder : Folder | undefined
21
21
lastActiveFolder = await db . table ( 'folders' ) . where ( 'folder_id' ) . equals ( id ) . first ( )
22
22
activeFolder . set ( lastActiveFolder )
23
23
activeBookmarks . set ( await db . bookmarks . bulkGet ( lastActiveFolder . bookmarks ) )
24
+ folders . set ( await db . table ( 'folders' ) . toArray ( ) )
24
25
}
25
26
26
27
@@ -30,16 +31,16 @@ export async function init_db() {
30
31
*/
31
32
export async function newBookmark_db ( bookmark : Bookmark ) {
32
33
log ( '🎬 Creating new bookmark: ' , '#fa8' , 'dimgray' , 25 )
33
- log ( bookmark )
34
-
35
34
// Todo: Consolidate this into a single transaction?
36
35
36
+ $db . bookmarks = [ ...$db . bookmarks , bookmark ]
37
+
37
38
//? Add to bookmarks table
38
39
await db . bookmarks . add ( bookmark )
39
40
40
41
//? Add id to activeFolder store
41
42
activeFolder . update ( ( f ) => {
42
- f . bookmarks = [ ... f . bookmarks , bookmark . bookmark_id ]
43
+ f . bookmarks . push ( bookmark . bookmark_id ) ;
43
44
return f
44
45
} )
45
46
@@ -58,6 +59,31 @@ export async function newBookmark_db(bookmark: Bookmark) {
58
59
}
59
60
60
61
62
+ /**
63
+ ** Creates a new folder.
64
+ * @param {folder } The bookmark to add.
65
+ */
66
+ export async function newFolder_db ( folder : Folder ) {
67
+ log ( '🎬 Creating new folder: ' , '#fd8' , '#333' , 25 )
68
+
69
+ // Todo: Consolidate this into a single transaction?
70
+
71
+ //? Clear any filters
72
+ tagFilter . set ( null )
73
+
74
+ //? Add to folders table
75
+ await db . folders . add ( folder )
76
+
77
+ //? Set activeFolder store
78
+ activeFolder . set ( folder )
79
+
80
+ //? Update activeBookmarks store
81
+ activeBookmarks . set ( await db . bookmarks . bulkGet ( folder . bookmarks ) )
82
+
83
+ log ( '🏁 New Folder added' , '#fd8' , '#333' , 25 )
84
+ }
85
+
86
+
61
87
/**
62
88
** Gets bookmark settings.
63
89
* @param {id } The id of the bookmark to retrieve.
@@ -69,6 +95,24 @@ export async function getBookmark_db(id: Bookmark['bookmark_id']) {
69
95
}
70
96
71
97
98
+ /**
99
+ ** Gets folder settings.
100
+ * @param {id } The id of the folder to retrieve.
101
+ */
102
+ export async function getFolder_db ( id : Folder [ 'folder_id' ] ) {
103
+ log ( `🎬 Getting folder with id of ${ id } ` , '#fa8' , 'dimgray' , 25 )
104
+
105
+ return db . folders . where ( 'folder_id' ) . equals ( id ) . first ( )
106
+ }
107
+
108
+
109
+ /**
110
+ ** Counts total folders.
111
+ * @returns {Promise<number> } The number of folders in the database.
112
+ */
113
+ export const getFolderCount_db = ( ) => db . folders . count ( )
114
+
115
+
72
116
/**
73
117
** Updates the db after an index/position swap.
74
118
*/
0 commit comments