migration GeräteEvents hinzugefügt; Entities erstellt
This commit is contained in:
@@ -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),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
123
migration/src/m20250203_214832_hardware_events.rs
Normal file
123
migration/src/m20250203_214832_hardware_events.rs
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user