WIP
This commit is contained in:
@@ -2,6 +2,7 @@ use std::sync::{Arc, Mutex, MutexGuard};
|
|||||||
use rusqlite::{Connection, Error, Row};
|
use rusqlite::{Connection, Error, Row};
|
||||||
use rusqlite::fallible_iterator::FallibleIterator;
|
use rusqlite::fallible_iterator::FallibleIterator;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
use lumiere_domain::user::model::User;
|
||||||
use crate::video::model::LibraryItemEntity;
|
use crate::video::model::LibraryItemEntity;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@@ -85,4 +86,60 @@ impl LibraryItemSqliteRepository {
|
|||||||
prepared_statement.execute(rusqlite::params_from_iter(params))?;
|
prepared_statement.execute(rusqlite::params_from_iter(params))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_by_id_with_all_hierarchy(&self, library_item_id: &Uuid) -> Result<Option<LibraryItemEntity>, Error> {
|
||||||
|
let database_connection = self.get_connection();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Given a LibraryItem item_1:
|
||||||
|
LibraryItemEntity {
|
||||||
|
id: <id1>,
|
||||||
|
name: "item_1",
|
||||||
|
type: 0,
|
||||||
|
parent_item_id: <id2>
|
||||||
|
}
|
||||||
|
|
||||||
|
Its parent item is item_2:
|
||||||
|
LibraryItemEntity {
|
||||||
|
id: <id2>,
|
||||||
|
name: "item_2",
|
||||||
|
type: 1,
|
||||||
|
parent_item_id: <id3>
|
||||||
|
}
|
||||||
|
|
||||||
|
item_2 has a parent which is item_3:
|
||||||
|
LibraryItemEntity {
|
||||||
|
id: <id3>,
|
||||||
|
name: "item_3",
|
||||||
|
type: 0,
|
||||||
|
parent_item_id: NULL
|
||||||
|
}
|
||||||
|
|
||||||
|
TODO: Write a SQL query to retrieve all LibraryItemEntity objects. It should filter on id with a parameter.
|
||||||
|
This query should return something like:
|
||||||
|
| id | name | type | parent_item_id |
|
||||||
|
| ----- | -------- | ---- | -------------- |
|
||||||
|
| <id1> | 'item_1' | 0 | <id2> |
|
||||||
|
| <id2> | 'item_2' | 1 | <id3> |
|
||||||
|
| <id3> | 'item_3' | 1 | NULL |
|
||||||
|
|
||||||
|
Take example on the following query and adapt it.
|
||||||
|
*/
|
||||||
|
let mut prepared_statement = database_connection.prepare(
|
||||||
|
"SELECT
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
parent_item_id
|
||||||
|
FROM library_item
|
||||||
|
WHERE id = ?1;"
|
||||||
|
)?;
|
||||||
|
let mut rows = prepared_statement.query([library_item_id.to_string()])?;
|
||||||
|
|
||||||
|
if let Some(row) = rows.next()? {
|
||||||
|
Ok(Some(Self::map_to_library_item(&row)?))
|
||||||
|
} else {
|
||||||
|
Ok(None)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user