Add additional tables. Cleanup
This commit is contained in:
parent
da2c1b9b19
commit
4ca694b8a2
@ -1,6 +1,6 @@
|
|||||||
use sea_orm_migration::prelude::*;
|
use sea_orm_migration::prelude::*;
|
||||||
|
|
||||||
use crate::{to_pk2_name, CreateIndexExt, DropTable, IntoColumnDef};
|
use crate::{CreateIndexExt, DropTable, IntoColumnDef};
|
||||||
|
|
||||||
/// ```sql
|
/// ```sql
|
||||||
/// CREATE TABLE cart_discounts
|
/// CREATE TABLE cart_discounts
|
||||||
@ -79,19 +79,10 @@ impl Migration {
|
|||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
m.create_index(
|
m.create_2col_idx(
|
||||||
IndexCreateStatement::new()
|
|
||||||
.table(CartGiftCard::CartGiftCards)
|
|
||||||
.col(CartGiftCard::CartId)
|
|
||||||
.col(CartGiftCard::GiftCardId)
|
|
||||||
.name(&to_pk2_name(
|
|
||||||
CartGiftCard::CartGiftCards,
|
CartGiftCard::CartGiftCards,
|
||||||
CartGiftCard::CartId,
|
CartGiftCard::CartId,
|
||||||
CartGiftCard::GiftCardId,
|
CartGiftCard::GiftCardId,
|
||||||
))
|
|
||||||
.primary()
|
|
||||||
.if_not_exists()
|
|
||||||
.to_owned(),
|
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
@ -493,12 +493,14 @@ impl Migration {
|
|||||||
Table::create()
|
Table::create()
|
||||||
.table(PaymentCollectionSession::PaymentCollectionSessions)
|
.table(PaymentCollectionSession::PaymentCollectionSessions)
|
||||||
.col(
|
.col(
|
||||||
ColumnDef::new(PaymentCollectionSession::PaymentCollectionId)
|
PaymentCollectionSession::PaymentCollectionId
|
||||||
|
.col()
|
||||||
.uuid()
|
.uuid()
|
||||||
.not_null(),
|
.not_null(),
|
||||||
)
|
)
|
||||||
.col(
|
.col(
|
||||||
ColumnDef::new(PaymentCollectionSession::PaymentSessionId)
|
PaymentCollectionSession::PaymentSessionId
|
||||||
|
.col()
|
||||||
.uuid()
|
.uuid()
|
||||||
.not_null(),
|
.not_null(),
|
||||||
)
|
)
|
||||||
|
@ -2,8 +2,7 @@ use sea_orm_migration::prelude::*;
|
|||||||
|
|
||||||
use crate::constraint::Check;
|
use crate::constraint::Check;
|
||||||
use crate::{
|
use crate::{
|
||||||
auto_uuid_not_null, create_type, drop_type, to_fk_name, to_pk2_name, ts_def_now_not_null,
|
auto_uuid_not_null, ts_def_now_not_null, AsIden, CreateConstraint, DropTable, IntoColumnDef,
|
||||||
AsIden, CreateConstraint,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(DeriveMigrationName)]
|
#[derive(DeriveMigrationName)]
|
||||||
@ -12,10 +11,19 @@ pub struct Migration;
|
|||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
impl MigrationTrait for Migration {
|
impl MigrationTrait for Migration {
|
||||||
async fn up(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
async fn up(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
self.create_line_items(m).await?;
|
||||||
|
self.create_line_item_adjustments(m).await?;
|
||||||
|
self.create_line_item_tax_lines(m).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn down(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
async fn down(&self, m: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
self.drop_table(m, LineItem::LineItems).await?;
|
||||||
|
self.drop_table(m, LineItemAdjustment::LineItemAdjustments)
|
||||||
|
.await?;
|
||||||
|
self.drop_table(m, LineItemTaxLine::LineItemTaxLines)
|
||||||
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -55,28 +63,52 @@ impl Migration {
|
|||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
async fn create_line_items(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
async fn create_line_items(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
||||||
m.create_constraint(
|
use LineItem::*;
|
||||||
LineItem::LineItems,
|
|
||||||
Check::less_eq(LineItem::ShippedQuantity, LineItem::FulfilledQuantity),
|
m.create_table(
|
||||||
|
Table::create()
|
||||||
|
.table(LineItems)
|
||||||
|
.col(auto_uuid_not_null!(LineItem::Id))
|
||||||
|
.col(CartId.col().uuid())
|
||||||
|
.col(OrderId.col().uuid())
|
||||||
|
.col(SwapId.col().uuid())
|
||||||
|
.col(Title.col().string().not_null())
|
||||||
|
.col(Description.col().string().not_null())
|
||||||
|
.col(Thumbnail.col().string().not_null())
|
||||||
|
.col(IsGiftcard.col().boolean().default(false).not_null())
|
||||||
|
.col(ShouldMerge.col().boolean().default(true).not_null())
|
||||||
|
.col(AllowDiscounts.col().boolean().default(true).not_null())
|
||||||
|
.col(HasShipping.col().boolean())
|
||||||
|
.col(UnitPrice.col().integer().not_null())
|
||||||
|
.col(VariantId.col().uuid())
|
||||||
|
.col(Quantity.col().integer().not_null())
|
||||||
|
.col(FulfilledQuantity.col().integer())
|
||||||
|
.col(ReturnedQuantity.col().integer())
|
||||||
|
.col(ShippedQuantity.col().integer())
|
||||||
|
.col(ts_def_now_not_null!(LineItem::CreatedAt))
|
||||||
|
.col(ts_def_now_not_null!(LineItem::UpdatedAt))
|
||||||
|
.col(Metadata.col().json_binary())
|
||||||
|
.col(ClaimOrderId.col().uuid())
|
||||||
|
.col(IsReturn.col().boolean().default(false).not_null())
|
||||||
|
.col(OriginalItemId.col().uuid())
|
||||||
|
.col(OrderEditId.col().uuid())
|
||||||
|
.to_owned(),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
m.create_constraint(
|
m.create_constraint(
|
||||||
LineItem::LineItems,
|
LineItems,
|
||||||
Check::greater(LineItem::Quantity, 0.iden()),
|
Check::less_eq(ShippedQuantity, FulfilledQuantity),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
m.create_constraint(
|
m.create_constraint(LineItems, Check::greater(Quantity, 0.iden()))
|
||||||
LineItem::LineItems,
|
|
||||||
Check::less_eq(LineItem::ReturnedQuantity, LineItem::Quantity),
|
|
||||||
)
|
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
m.create_constraint(
|
m.create_constraint(LineItems, Check::less_eq(ReturnedQuantity, Quantity))
|
||||||
LineItem::LineItems,
|
.await?;
|
||||||
Check::less_eq(LineItem::FulfilledQuantity, LineItem::Quantity),
|
|
||||||
)
|
m.create_constraint(LineItems, Check::less_eq(FulfilledQuantity, Quantity))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -94,6 +126,20 @@ impl Migration {
|
|||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
async fn create_line_item_adjustments(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
async fn create_line_item_adjustments(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
||||||
|
use LineItemAdjustment::*;
|
||||||
|
|
||||||
|
m.create_table(
|
||||||
|
Table::create()
|
||||||
|
.table(LineItemAdjustments)
|
||||||
|
.col(auto_uuid_not_null!(Id))
|
||||||
|
.col(ItemId.col().uuid().not_null())
|
||||||
|
.col(Description.col().string().not_null())
|
||||||
|
.col(DiscountId.col().uuid())
|
||||||
|
.col(Amount.col().integer().not_null())
|
||||||
|
.col(Metadata.col().json_binary())
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,6 +157,23 @@ impl Migration {
|
|||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
async fn create_line_item_tax_lines(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
async fn create_line_item_tax_lines(&self, m: &SchemaManager<'_>) -> Result<(), DbErr> {
|
||||||
|
use LineItemTaxLine::*;
|
||||||
|
|
||||||
|
m.create_table(
|
||||||
|
Table::create()
|
||||||
|
.table(LineItemTaxLines)
|
||||||
|
.col(auto_uuid_not_null!(Id))
|
||||||
|
.col(Rate.col().double().not_null())
|
||||||
|
.col(Name.col().string().not_null())
|
||||||
|
.col(Code.col().string())
|
||||||
|
.col(ts_def_now_not_null!(CreatedAt))
|
||||||
|
.col(ts_def_now_not_null!(UpdatedAt))
|
||||||
|
.col(Metadata.col().json_binary())
|
||||||
|
.col(ItemId.col().uuid().not_null())
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,20 +251,20 @@ impl Display for Constraint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait(?Send)]
|
#[async_trait]
|
||||||
pub trait CreateConstraint {
|
pub trait CreateConstraint {
|
||||||
async fn create_constraint<T: Iden, C: Into<Constraint>>(
|
async fn create_constraint<T, C>(&self, table: T, c: C) -> Result<(), DbErr>
|
||||||
&self,
|
where
|
||||||
table: T,
|
T: Iden + Send,
|
||||||
c: C,
|
C: Into<Constraint> + Send;
|
||||||
) -> Result<(), DbErr>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait(?Send)]
|
#[async_trait]
|
||||||
impl CreateConstraint for SchemaManager<'_> {
|
impl CreateConstraint for SchemaManager<'_> {
|
||||||
async fn create_constraint<T: Iden, C>(&self, table: T, c: C) -> Result<(), DbErr>
|
async fn create_constraint<T, C>(&self, table: T, c: C) -> Result<(), DbErr>
|
||||||
where
|
where
|
||||||
C: Into<Constraint>,
|
T: Iden + Send,
|
||||||
|
C: Into<Constraint> + Send,
|
||||||
{
|
{
|
||||||
let c = c.into();
|
let c = c.into();
|
||||||
self.get_connection()
|
self.get_connection()
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
use sea_orm_migration::prelude::*;
|
use sea_orm_migration::prelude::*;
|
||||||
|
|
||||||
use crate::constraint::Check;
|
use crate::constraint::Check;
|
||||||
use crate::sea_orm::Iterable;
|
use crate::{auto_uuid_not_null, ts_def_now_not_null, AsIden, CreateConstraint, IntoColumnDef};
|
||||||
use crate::{
|
|
||||||
auto_uuid_not_null, create_type, drop_type, ts_def_now_not_null, AsIden, CreateConstraint,
|
|
||||||
DropTable, IntoColumnDef,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(DeriveMigrationName)]
|
#[derive(DeriveMigrationName)]
|
||||||
pub struct Migration;
|
pub struct Migration;
|
||||||
|
Loading…
Reference in New Issue
Block a user