diff --git a/migrations/20240530183519_init.down.sql b/migrations/20240530183519_init.down.sql new file mode 100644 index 0000000..b3180c1 --- /dev/null +++ b/migrations/20240530183519_init.down.sql @@ -0,0 +1 @@ +DROP DOMAIN ULID CASCADE; diff --git a/migrations/20240530183519_init.up.sql b/migrations/20240530183519_init.up.sql new file mode 100644 index 0000000..7376d6c --- /dev/null +++ b/migrations/20240530183519_init.up.sql @@ -0,0 +1 @@ +CREATE DOMAIN ULID AS CHAR(26); diff --git a/migrations/20240530193519_typen.up.sql b/migrations/20240530193519_typen.up.sql index 68b4081..04f3c4c 100644 --- a/migrations/20240530193519_typen.up.sql +++ b/migrations/20240530193519_typen.up.sql @@ -1,6 +1,7 @@ CREATE TABLE IF NOT EXISTS typen ( typ_id UUID PRIMARY KEY, - id CHAR(26) UNIQUE NOT NULL, + -- id CHAR(26) UNIQUE NOT NULL, + id ULID UNIQUE NOT NULL, typname VARCHAR NOT NULL, erstellt_am TIMESTAMP WITH TIME ZONE NOT NULL, geaendert_am TIMESTAMP WITH TIME ZONE NOT NULL diff --git a/src/domain/typ/model/typ.rs b/src/domain/typ/model/typ.rs index 7fac9cd..1f8a54b 100644 --- a/src/domain/typ/model/typ.rs +++ b/src/domain/typ/model/typ.rs @@ -2,8 +2,15 @@ use async_graphql::{ComplexObject, SimpleObject}; use crate::scalar::{Time, Ulid}; -#[derive(sqlx::FromRow, SimpleObject, Clone, Debug)] -#[graphql(complex)] +// #[derive(Debug, sqlx::FromRow)] +// pub struct TypDb { +// pub id: String, +// pub typname: String, +// pub erstellt_am: Time, +// pub geaendert_am: Time, +// } + +#[derive(SimpleObject, Clone, sqlx::FromRow)] pub struct Typ { /// Die Ulid eines Gerätetypen pub id: Ulid, @@ -18,5 +25,16 @@ pub struct Typ { pub geaendert_am: Time, } +// impl From for Typ { +// fn from(db: TypDb) -> Self { +// Self { +// id: Ulid(ulid::Ulid::from_string(&db.id).expect("stored ULID is valid")), +// typname: db.typname, +// erstellt_am: db.erstellt_am, +// geaendert_am: db.geaendert_am, +// } +// } +// } + #[ComplexObject] impl Typ {} diff --git a/src/domain/typ/repository/typ_alle.rs b/src/domain/typ/repository/typ_alle.rs index 6bd68fb..b9c872d 100644 --- a/src/domain/typ/repository/typ_alle.rs +++ b/src/domain/typ/repository/typ_alle.rs @@ -11,6 +11,8 @@ impl Repository { let typen = sqlx::query_as::<_, model::Typ>(QUERY).fetch_all(db).await?; + // let typen: Vec = typen.into_iter().map(model::Typ::from).collect(); + Ok(typen) } } diff --git a/src/domain/typ/repository/typ_einen_zeigen.rs b/src/domain/typ/repository/typ_einen_zeigen.rs index fe30230..92acc24 100644 --- a/src/domain/typ/repository/typ_einen_zeigen.rs +++ b/src/domain/typ/repository/typ_einen_zeigen.rs @@ -19,6 +19,7 @@ impl Repository { .bind(id) .fetch_one(db) .await?; + // .map(model::Typ::from)?; Ok(row) } diff --git a/src/domain/typ/repository/typ_erstelle_viele.rs b/src/domain/typ/repository/typ_erstelle_viele.rs index ab321b0..e18097b 100644 --- a/src/domain/typ/repository/typ_erstelle_viele.rs +++ b/src/domain/typ/repository/typ_erstelle_viele.rs @@ -13,7 +13,7 @@ impl Repository { typen: &[entity::TypErstellen], // input: &[Typ], ) -> Result, Error> { let typ_id: Vec = typen.iter().map(|t| t.typ_id).collect(); - let id: Vec = typen.iter().map(|t| t.id.to_string()).collect(); + let id: Vec = typen.iter().map(|t| t.id).collect(); let typnamen: Vec = typen.iter().map(|t| t.typname.clone()).collect(); let erstellt_am: Vec