migration GeräteEvents hinzugefügt; Entities erstellt

This commit is contained in:
2025-02-04 00:40:08 +01:00
parent e94bc657e8
commit 530b8c31d6
13 changed files with 359 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ pub use sea_orm_migration::prelude::*;
mod m20250202_000233_benutzer;
mod m20250202_225521_hardware;
mod m20250203_214832_hardware_events;
pub struct Migrator;
@@ -11,6 +12,7 @@ impl MigratorTrait for Migrator {
vec![
Box::new(m20250202_000233_benutzer::Migration),
Box::new(m20250202_225521_hardware::Migration),
Box::new(m20250203_214832_hardware_events::Migration),
]
}
}

View File

@@ -9,8 +9,8 @@ use crate::m20250202_000233_benutzer::Benutzer;
pub struct Migration;
#[derive(DeriveIden)]
#[sea_orm(iden = "status_type_enum")]
struct StatusTypeEnum;
#[sea_orm(iden = "status_type")]
struct StatusType;
#[derive(DeriveIden, EnumIter)]
pub enum StatusVarianten {
@@ -36,7 +36,7 @@ impl MigrationTrait for Migration {
manager
.create_type(
Type::create()
.as_enum(StatusTypeEnum)
.as_enum(StatusType)
.values(StatusVarianten::iter())
.to_owned(),
)
@@ -53,7 +53,7 @@ impl MigrationTrait for Migration {
.col(text(Hardware::Beschreibung))
.col(enumeration(
Hardware::Status,
StatusTypeEnum,
StatusType,
StatusVarianten::iter(),
))
.col(uuid(Hardware::BenutzerId))
@@ -71,7 +71,8 @@ impl MigrationTrait for Migration {
ForeignKey::create()
.name("fk_hardware_benutzer")
.from(Hardware::Table, Hardware::BenutzerId)
.to(Benutzer::Table, Benutzer::Id),
.to(Benutzer::Table, Benutzer::Id)
.on_delete(ForeignKeyAction::SetNull),
)
.to_owned(),
)
@@ -106,7 +107,7 @@ impl MigrationTrait for Migration {
.await?;
manager
.drop_type(Type::drop().name(StatusTypeEnum).to_owned())
.drop_type(Type::drop().name(StatusType).to_owned())
.await
}
}

View File

@@ -0,0 +1,123 @@
use chrono::Utc;
use extension::postgres::Type;
use sea_orm::{EnumIter, Iterable};
use sea_orm_migration::{prelude::*, schema::*};
use crate::m20250202_000233_benutzer::Benutzer;
#[derive(DeriveMigrationName)]
pub struct Migration;
#[derive(DeriveIden)]
#[sea_orm(iden = "event_type")]
struct EventType;
#[derive(DeriveIden, EnumIter)]
pub enum EventVarianten {
#[sea_orm(iden = "erstellt", string_value = "Erstellt")]
Erstellt,
#[sea_orm(iden = "geaendert", string_value = "Geändert")]
Geaendert,
#[sea_orm(iden = "geloescht", string_value = "Gelöscht")]
Geloescht,
}
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.create_type(
Type::create()
.as_enum(EventType)
.values(EventVarianten::iter())
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(HardwareEvents::Table)
.if_not_exists()
.col(pk_uuid(HardwareEvents::Id))
.col(uuid(HardwareEvents::HardwareId))
.col(enumeration(
HardwareEvents::Event,
EventType,
EventVarianten::iter(),
))
.col(json(HardwareEvents::Payload))
.col(integer(HardwareEvents::Version).not_null().default(1))
.col(
timestamp_with_time_zone(HardwareEvents::ErstelltAm)
.not_null()
.default(Utc::now()),
)
.col(uuid(HardwareEvents::BenutzerId))
.foreign_key(
ForeignKey::create()
.name("fk_hardware_event_benutzer")
.from(HardwareEvents::Table, HardwareEvents::BenutzerId)
.to(Benutzer::Table, Benutzer::Id)
.on_delete(ForeignKeyAction::SetNull),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.unique()
.name("idx_hardware_events_hardware_id")
.table(HardwareEvents::Table)
.col(HardwareEvents::HardwareId)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.unique()
.name("idx_hardware_events_erstellt_am")
.table(HardwareEvents::Table)
.col(HardwareEvents::ErstelltAm)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.unique()
.name("idx_hardware_events_event")
.table(HardwareEvents::Table)
.col(HardwareEvents::Event)
.to_owned(),
)
.await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_table(Table::drop().table(HardwareEvents::Table).to_owned())
.await?;
manager
.drop_type(Type::drop().name(EventType).to_owned())
.await
}
}
#[derive(DeriveIden)]
enum HardwareEvents {
Table,
Id,
HardwareId,
Event,
Payload,
Version,
ErstelltAm,
BenutzerId,
}