WIP
This commit is contained in:
@@ -2,6 +2,7 @@ use std::sync::{Arc, Mutex, MutexGuard};
|
||||
use rusqlite::{Connection, Error, Row};
|
||||
use rusqlite::fallible_iterator::FallibleIterator;
|
||||
use uuid::Uuid;
|
||||
use lumiere_domain::user::model::User;
|
||||
use crate::video::model::LibraryItemEntity;
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -85,4 +86,60 @@ impl LibraryItemSqliteRepository {
|
||||
prepared_statement.execute(rusqlite::params_from_iter(params))?;
|
||||
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