Compare commits

...

2 commits

4 changed files with 161 additions and 21 deletions

View file

@ -3,10 +3,17 @@
use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
#[sea_orm(table_name = "license")]
#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
impl EntityName for Entity {
fn table_name(&self) -> &str {
"license"
}
}
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
#[serde(skip_deserializing)]
pub id: Uuid,
pub name: String,
@ -14,21 +21,66 @@ pub struct Model {
pub end: Option<DateTimeWithTimeZone>,
pub amount: Option<i32>,
pub key: String,
pub note: Option<String>,
pub group_id: Uuid,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
pub enum Column {
Id,
Name,
Start,
End,
Amount,
Key,
Note,
GroupId,
}
#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)]
pub enum PrimaryKey {
Id,
}
impl PrimaryKeyTrait for PrimaryKey {
type ValueType = Uuid;
fn auto_increment() -> bool {
false
}
}
#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
#[sea_orm(
belongs_to = "super::license_group::Entity",
from = "Column::GroupId",
to = "super::license_group::Column::Id",
on_update = "Cascade",
on_delete = "Cascade"
)]
LicenseGroup,
}
impl ColumnTrait for Column {
type EntityName = Entity;
fn def(&self) -> ColumnDef {
match self {
Self::Id => ColumnType::Uuid.def(),
Self::Name => ColumnType::String(None).def(),
Self::Start => ColumnType::TimestampWithTimeZone.def().null(),
Self::End => ColumnType::TimestampWithTimeZone.def().null(),
Self::Amount => ColumnType::Integer.def().null(),
Self::Key => ColumnType::String(None).def(),
Self::Note => ColumnType::String(None).def().null(),
Self::GroupId => ColumnType::Uuid.def(),
}
}
}
impl RelationTrait for Relation {
fn def(&self) -> RelationDef {
match self {
Self::LicenseGroup => Entity::belongs_to(super::license_group::Entity)
.from(Column::GroupId)
.to(super::license_group::Column::Id)
.into(),
}
}
}
impl Related<super::license_group::Entity> for Entity {
fn to() -> RelationDef {
Relation::LicenseGroup.def()

View file

@ -3,21 +3,63 @@
use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
#[sea_orm(table_name = "license_group")]
#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
impl EntityName for Entity {
fn table_name(&self) -> &str {
"license_group"
}
}
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
#[serde(skip_deserializing)]
pub id: Uuid,
pub name: String,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
pub enum Column {
Id,
Name,
}
#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)]
pub enum PrimaryKey {
Id,
}
impl PrimaryKeyTrait for PrimaryKey {
type ValueType = Uuid;
fn auto_increment() -> bool {
false
}
}
#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
#[sea_orm(has_many = "super::license::Entity")]
License,
}
impl ColumnTrait for Column {
type EntityName = Entity;
fn def(&self) -> ColumnDef {
match self {
Self::Id => ColumnType::Uuid.def(),
Self::Name => ColumnType::String(None).def(),
}
}
}
impl RelationTrait for Relation {
fn def(&self) -> RelationDef {
match self {
Self::License => Entity::has_many(super::license::Entity).into(),
}
}
}
impl Related<super::license::Entity> for Entity {
fn to() -> RelationDef {
Relation::License.def()

View file

@ -3,19 +3,63 @@
use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)]
#[sea_orm(table_name = "user")]
#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
impl EntityName for Entity {
fn table_name(&self) -> &str {
"user"
}
}
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
#[serde(skip_deserializing)]
pub id: Uuid,
pub name: String,
#[sea_orm(unique)]
pub email: String,
pub hash: String,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
pub enum Column {
Id,
Name,
Email,
Hash,
}
#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)]
pub enum PrimaryKey {
Id,
}
impl PrimaryKeyTrait for PrimaryKey {
type ValueType = Uuid;
fn auto_increment() -> bool {
false
}
}
#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {}
impl ColumnTrait for Column {
type EntityName = Entity;
fn def(&self) -> ColumnDef {
match self {
Self::Id => ColumnType::Uuid.def(),
Self::Name => ColumnType::String(None).def(),
Self::Email => ColumnType::String(None).def().unique(),
Self::Hash => ColumnType::String(None).def(),
}
}
}
impl RelationTrait for Relation {
fn def(&self) -> RelationDef {
panic!("No RelationDef")
}
}
impl ActiveModelBehavior for ActiveModel {}

View file

@ -23,6 +23,7 @@ impl MigrationTrait for Migration {
.col(ColumnDef::new(License::End).timestamp_with_time_zone())
.col(ColumnDef::new(License::Amount).integer())
.col(ColumnDef::new(License::Key).string().not_null())
.col(ColumnDef::new(License::Note).string())
.col(ColumnDef::new(License::GroupId).uuid().not_null())
.foreign_key(
ForeignKey::create()
@ -54,6 +55,7 @@ enum License {
Amount,
Key,
GroupId,
Note,
}
#[derive(DeriveIden)]