Skip to main content

shared_framework/data/seed/
entity.rs

1//! Seeder tracking entity.
2//!
3//! Maps the `__database_seeders` table recording which seeders have run.
4//! Each row stores one executed seeder name with identity and timestamps;
5//! implements [`BaseEntity`] so it works with generic repository code.
6use crate::data::BaseEntity;
7use sea_orm::entity::prelude::*;
8use serde::{Deserialize, Serialize};
9use uuid::Uuid;
10
11/// One executed seeder record in `__database_seeders`.
12#[sea_orm::model]
13#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
14#[sea_orm(table_name = "__database_seeders", rename_all = "camelCase")]
15pub struct Model {
16    /// Primary key value.
17    #[sea_orm(primary_key)]
18    pub id: i64,
19    /// Stable public identifier.
20    #[sea_orm(unique)]
21    pub uid: Uuid,
22    /// Unique seeder name as reported by the seeder.
23    pub seeder_name: String,
24    /// Creation timestamp.
25    pub created_at: DateTimeWithTimeZone,
26    /// Last-update timestamp.
27    pub updated_at: DateTimeWithTimeZone,
28}
29
30impl ActiveModelBehavior for ActiveModel {}
31
32impl BaseEntity for ModelEx {
33    type LoaderType = EntityLoader;
34
35    fn load() -> Self::LoaderType {
36        Entity::load()
37    }
38
39    fn id(&self) -> i64 {
40        self.id
41    }
42    fn uid(&self) -> Uuid {
43        self.uid
44    }
45    fn created_at(&self) -> DateTimeWithTimeZone {
46        self.created_at
47    }
48    fn updated_at(&self) -> DateTimeWithTimeZone {
49        self.updated_at
50    }
51}