diff --git a/migrations/20240907190149_add-links.sql b/migrations/20240907190149_add-links.sql new file mode 100644 index 0000000..67d3ad5 --- /dev/null +++ b/migrations/20240907190149_add-links.sql @@ -0,0 +1,3 @@ +alter table "public"."series" add column source text not null; +alter table "public"."series" add column imdb text null; +alter table "public"."series" add column wikipedia text null diff --git a/sql/delete_series.sql b/sql/delete_series.sql new file mode 100644 index 0000000..88c87dc --- /dev/null +++ b/sql/delete_series.sql @@ -0,0 +1 @@ +delete from series where id = $1; diff --git a/src/app/home.rs b/src/app/home.rs index a400b79..5526ac8 100644 --- a/src/app/home.rs +++ b/src/app/home.rs @@ -1,15 +1,16 @@ -use super::series::{add::AddSeries, SeriesList}; +use super::series::{add::AddSeries, DeleteSeries, SeriesList}; use leptos::*; use leptos_router::*; #[component] pub fn HomePage() -> impl IntoView { let add_series = create_server_action::(); + let delete_series = create_server_action::(); provide_context(add_series); + provide_context(delete_series); view! { -

"What We're Watching"

diff --git a/src/app/mod.rs b/src/app/mod.rs index c92f1b1..f063785 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -39,6 +39,7 @@ pub fn App() -> impl IntoView { } .into_view() }> +

"What We're Watching"

diff --git a/src/app/series/add.rs b/src/app/series/add.rs index ada0ada..f484d0e 100644 --- a/src/app/series/add.rs +++ b/src/app/series/add.rs @@ -7,20 +7,48 @@ pub fn AddSeries() -> impl IntoView { view! {
-

Add Series

+ + x + +

New Series

+
+
+ + +
+
+ + +
+
+ + +
diff --git a/src/app/series/mod.rs b/src/app/series/mod.rs index 91703a6..2063110 100644 --- a/src/app/series/mod.rs +++ b/src/app/series/mod.rs @@ -11,16 +11,15 @@ pub mod view; #[component] pub fn SeriesList() -> impl IntoView { - let add_user = expect_context::>>(); - let load = create_resource( - move || add_user.version().get(), + let add_series = expect_context::>>(); + let delete_series = expect_context::>>(); + let all_series = create_resource( + move || (add_series.version().get(), delete_series.version().get()), |_| async move { get_all().await }, ); view! { "Loading..."
}> -
    - {load().map(format_series)} -
+ { move || all_series.get().map(format_all_series)} + } + } + > +
    + { + all_series.map(|all_series| { + Some(all_series.into_iter().map(format_series).collect_view()) + }) + } +
+ + }) +} + +fn format_series(series: Series) -> impl IntoView { + let delete_series = expect_context::>>(); + view! { +
  • + +
  • - } - }) - .collect_view() + +
    + + + {series.name} + + } } #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] @@ -76,3 +110,18 @@ pub async fn get_all() -> Result, ServerFnError> { Ok(found) } + +#[server(DeleteSeries)] +pub async fn delete(id: String) -> Result<(), ServerFnError> { + use crate::db::load_statement; + use sqlx::{Pool, Postgres}; + + let pool: Pool = expect_context(); + + let s = load_statement("delete_series.sql"); + sqlx::query(&s) + .bind(id.parse::()?) + .execute(&pool) + .await?; + Ok(()) +} diff --git a/src/app/series/view.rs b/src/app/series/view.rs index d9f6353..8120967 100644 --- a/src/app/series/view.rs +++ b/src/app/series/view.rs @@ -1,10 +1,17 @@ use leptos::*; +use leptos_router::*; #[component] pub fn ViewSeries() -> impl IntoView { view! {
    + + x +

    View Series