1use std::path::PathBuf;
2
3use db::sqlez_macros::sql;
4use db::{define_connection, query};
5use workspace::{ItemId, WorkspaceDb, WorkspaceId};
6
7define_connection!(
8 pub static ref DB: EditorDb<WorkspaceDb> =
9 &[sql! (
10 CREATE TABLE editors(
11 item_id INTEGER NOT NULL,
12 workspace_id INTEGER NOT NULL,
13 path BLOB NOT NULL,
14 PRIMARY KEY(item_id, workspace_id),
15 FOREIGN KEY(workspace_id) REFERENCES workspaces(workspace_id)
16 ON DELETE CASCADE
17 ON UPDATE CASCADE
18 ) STRICT;
19 )];
20);
21
22impl EditorDb {
23 query! {
24 pub fn get_path(item_id: ItemId, workspace_id: WorkspaceId) -> Result<Option<PathBuf>> {
25 SELECT path FROM editors
26 WHERE item_id = ? AND workspace_id = ?
27 }
28 }
29
30 query! {
31 pub async fn save_path(item_id: ItemId, workspace_id: WorkspaceId, path: PathBuf) -> Result<()> {
32 INSERT OR REPLACE INTO editors(item_id, workspace_id, path)
33 VALUES (?, ?, ?)
34 }
35 }
36}