Compare commits

...

2 commits

Author SHA1 Message Date
b2c5dc2917
Update 2023-02-22 18:11:04 +01:00
143b795b92
Fix sql migration error 2023-02-22 18:06:22 +01:00
4 changed files with 18 additions and 3 deletions

View file

@ -2,6 +2,7 @@ CREATE TABLE schoolyears (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
untis_id INTEGER NOT NULL UNIQUE, untis_id INTEGER NOT NULL UNIQUE,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
active BOOLEAN NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP updated_at TIMESTAMP
); );
@ -15,7 +16,7 @@ CREATE TABLE tenants (
untis_id INTEGER NOT NULL UNIQUE, untis_id INTEGER NOT NULL UNIQUE,
schoolyear_id INTEGER NOT NULL REFERENCES schoolyears(id), schoolyear_id INTEGER NOT NULL REFERENCES schoolyears(id),
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
active BOOLEAN NOT NULL DEFAULT FALSE, active BOOLEAN NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP updated_at TIMESTAMP
); );

View file

@ -10,6 +10,7 @@ pub struct Schoolyear {
pub id: i32, pub id: i32,
pub untis_id: i32, pub untis_id: i32,
pub name: String, pub name: String,
pub active: bool,
pub created_at: NaiveDateTime, pub created_at: NaiveDateTime,
pub updated_at: Option<NaiveDateTime>, pub updated_at: Option<NaiveDateTime>,
} }
@ -19,6 +20,7 @@ pub struct Schoolyear {
pub struct NewSchoolyear<'a> { pub struct NewSchoolyear<'a> {
pub untis_id: i32, pub untis_id: i32,
pub name: &'a str, pub name: &'a str,
pub active: bool,
} }
#[derive(Identifiable, Queryable, Associations, Debug)] #[derive(Identifiable, Queryable, Associations, Debug)]

View file

@ -13,6 +13,7 @@ diesel::table! {
id -> Integer, id -> Integer,
untis_id -> Integer, untis_id -> Integer,
name -> VarChar, name -> VarChar,
active -> Bool,
created_at -> Timestamp, created_at -> Timestamp,
updated_at -> Nullable<Timestamp>, updated_at -> Nullable<Timestamp>,
} }

View file

@ -24,15 +24,26 @@ async fn fetch_schoolyears(client: &untis::Client, db_conn: &mut PgConnection) -
.map(|y| db::models::NewSchoolyear { .map(|y| db::models::NewSchoolyear {
untis_id: y.id, untis_id: y.id,
name: &y.name, name: &y.name,
active: false,
}) })
.collect::<Vec<db::models::NewSchoolyear>>(), .collect::<Vec<db::models::NewSchoolyear>>(),
) )
.execute(db_conn)?; .execute(db_conn)?;
Ok(db::schema::schoolyears::table let id = db::schema::schoolyears::table
.filter(db::schema::schoolyears::untis_id.eq(client.current_schoolyear().await?.id)) .filter(db::schema::schoolyears::untis_id.eq(client.current_schoolyear().await?.id))
.select(db::schema::schoolyears::id) .select(db::schema::schoolyears::id)
.first(db_conn)?) .first(db_conn)?;
diesel::update(db::schema::schoolyears::table)
.set(db::schema::schoolyears::active.eq(false))
.execute(db_conn)?;
diesel::update(db::schema::schoolyears::table)
.filter(db::schema::schoolyears::id.eq(id))
.set(db::schema::schoolyears::active.eq(true))
.execute(db_conn)?;
Ok(id)
} }
async fn fetch_current_tenant( async fn fetch_current_tenant(