shipd_core/db/
projects.rs1use crate::models::Project;
2use rusqlite::Connection;
3
4pub fn create_project(conn: &Connection, name: &str, path: &str) -> Result<i64, rusqlite::Error> {
5 conn.execute(
6 "INSERT INTO projects (name, path) VALUES (?1, ?2)",
7 (name, path),
8 )?;
9
10 Ok(conn.last_insert_rowid())
11}
12
13pub fn get_project_by_path(
14 conn: &Connection,
15 path: &str,
16) -> Result<Option<Project>, rusqlite::Error> {
17 let mut stmt = conn.prepare(
18 "SELECT id, name, description, path, created_at, updated_at FROM projects WHERE path = ?1",
19 )?;
20
21 let mut rows = stmt.query_map((path,), |row| {
22 Ok(Project {
23 id: row.get(0)?,
24 name: row.get(1)?,
25 description: row.get(2)?,
26 path: row.get(3)?,
27 created_at: row.get(4)?,
28 updated_at: row.get(5)?,
29 })
30 })?;
31
32 match rows.next() {
33 Some(row) => Ok(Some(row?)),
34 None => Ok(None),
35 }
36}