From 283b3965dbc3c928cdc218112bfc1daeeb057487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matou=C5=A1=20Volf?= <git@matousvolf.cz> Date: Sat, 17 Aug 2024 00:23:05 +0200 Subject: [PATCH] feat: add a project model --- .../2024-08-16-221326_create_projects/down.sql | 2 ++ .../2024-08-16-221326_create_projects/up.sql | 6 ++++++ src/models/mod.rs | 1 + src/models/project.rs | 17 +++++++++++++++++ src/schema/mod.rs | 8 ++++++++ 5 files changed, 34 insertions(+) create mode 100644 migrations/2024-08-16-221326_create_projects/down.sql create mode 100644 migrations/2024-08-16-221326_create_projects/up.sql create mode 100644 src/models/mod.rs create mode 100644 src/models/project.rs create mode 100644 src/schema/mod.rs diff --git a/migrations/2024-08-16-221326_create_projects/down.sql b/migrations/2024-08-16-221326_create_projects/down.sql new file mode 100644 index 0000000..1884a8f --- /dev/null +++ b/migrations/2024-08-16-221326_create_projects/down.sql @@ -0,0 +1,2 @@ +-- This file should undo anything in `up.sql` +DROP TABLE IF EXISTS "projects"; diff --git a/migrations/2024-08-16-221326_create_projects/up.sql b/migrations/2024-08-16-221326_create_projects/up.sql new file mode 100644 index 0000000..1bddc94 --- /dev/null +++ b/migrations/2024-08-16-221326_create_projects/up.sql @@ -0,0 +1,6 @@ +-- Your SQL goes here +CREATE TABLE "projects"( + "id" SERIAL NOT NULL PRIMARY KEY, + "title" TEXT NOT NULL +); + diff --git a/src/models/mod.rs b/src/models/mod.rs new file mode 100644 index 0000000..dfc721a --- /dev/null +++ b/src/models/mod.rs @@ -0,0 +1 @@ +pub(crate) mod project; diff --git a/src/models/project.rs b/src/models/project.rs new file mode 100644 index 0000000..8bed447 --- /dev/null +++ b/src/models/project.rs @@ -0,0 +1,17 @@ +use crate::schema::projects; +use diesel::prelude::*; +use serde::{Deserialize, Serialize}; + +#[derive(Queryable, Selectable, Serialize, Deserialize)] +#[diesel(table_name = crate::schema::projects)] +#[diesel(check_for_backend(diesel::pg::Pg))] +pub struct Project { + pub(crate) id: i32, + pub(crate) title: String, +} + +#[derive(Insertable, Serialize, Deserialize)] +#[diesel(table_name = projects)] +pub struct NewProject<'a> { + pub title: &'a str, +} diff --git a/src/schema/mod.rs b/src/schema/mod.rs new file mode 100644 index 0000000..6ad8716 --- /dev/null +++ b/src/schema/mod.rs @@ -0,0 +1,8 @@ +// @generated automatically by Diesel CLI. + +diesel::table! { + projects (id) { + id -> Int4, + title -> Text, + } +}