Explicit StringLen on ColumnType::String (#2123)

This commit is contained in:
Billy Chan 2024-03-05 15:31:58 +08:00 committed by GitHub
parent 9318a544fc
commit b775027fee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 67 additions and 50 deletions

View File

@ -55,7 +55,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
} }
} }
} }

View File

@ -62,7 +62,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
Self::CakeId => ColumnType::Integer.def(), Self::CakeId => ColumnType::Integer.def(),
} }
} }

View File

@ -1,7 +1,7 @@
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
#[sea_orm(rs_type = "String", db_type = "string(Some(1))")] #[sea_orm(rs_type = "String", db_type = "String(StringLen::N(1))")]
pub enum Category { pub enum Category {
#[sea_orm(string_value = "B")] #[sea_orm(string_value = "B")]
Big, Big,

View File

@ -55,7 +55,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
Self::VendorId => ColumnType::Integer.def().nullable(), Self::VendorId => ColumnType::Integer.def().nullable(),
} }
} }

View File

@ -267,7 +267,7 @@ impl Entity {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use quote::{format_ident, quote}; use quote::{format_ident, quote};
use sea_query::{ColumnType, ForeignKeyAction}; use sea_query::{ColumnType, ForeignKeyAction, StringLen};
use crate::{Column, DateTimeCrate, Entity, PrimaryKey, Relation, RelationType}; use crate::{Column, DateTimeCrate, Entity, PrimaryKey, Relation, RelationType};
@ -284,7 +284,7 @@ mod tests {
}, },
Column { Column {
name: "name".to_owned(), name: "name".to_owned(),
col_type: ColumnType::string(None), col_type: ColumnType::String(StringLen::None),
auto_increment: false, auto_increment: false,
not_null: false, not_null: false,
unique: false, unique: false,

View File

@ -115,8 +115,8 @@ impl Column {
None => quote! { ColumnType::Char(None) }, None => quote! { ColumnType::Char(None) },
}, },
ColumnType::String(s) => match s { ColumnType::String(s) => match s {
StringLen::N(s) => quote! { ColumnType::string(Some(#s)) }, StringLen::N(s) => quote! { ColumnType::String(StringLen::N(#s)) },
StringLen::None => quote! { ColumnType::string(None) }, StringLen::None => quote! { ColumnType::String(StringLen::None) },
StringLen::Max => quote! { ColumnType::String(StringLen::Max) }, StringLen::Max => quote! { ColumnType::String(StringLen::Max) },
}, },
ColumnType::Text => quote! { ColumnType::Text }, ColumnType::Text => quote! { ColumnType::Text },
@ -302,8 +302,8 @@ mod tests {
}; };
} }
vec![ vec![
make_col!("id", ColumnType::string(Some(255))), make_col!("id", ColumnType::String(StringLen::N(255))),
make_col!("id", ColumnType::string(None)), make_col!("id", ColumnType::String(StringLen::None)),
make_col!( make_col!(
"cake_id", "cake_id",
ColumnType::Custom(SeaRc::new(Alias::new("cus_col"))) ColumnType::Custom(SeaRc::new(Alias::new("cus_col")))
@ -493,8 +493,8 @@ mod tests {
fn test_get_def() { fn test_get_def() {
let columns = setup(); let columns = setup();
let col_defs = vec![ let col_defs = vec![
"ColumnType::string(Some(255u32)).def()", "ColumnType::String(StringLen::N(255u32)).def()",
"ColumnType::string(None).def()", "ColumnType::String(StringLen::None).def()",
"ColumnType::custom(\"cus_col\").def()", "ColumnType::custom(\"cus_col\").def()",
"ColumnType::TinyInteger.def()", "ColumnType::TinyInteger.def()",
"ColumnType::TinyUnsigned.def()", "ColumnType::TinyUnsigned.def()",
@ -681,7 +681,7 @@ mod tests {
assert_eq!( assert_eq!(
column.get_def().to_string(), column.get_def().to_string(),
quote! { quote! {
ColumnType::string(None).def().null() ColumnType::String(StringLen::None).def().null()
} }
.to_string() .to_string()
); );

View File

@ -841,7 +841,7 @@ mod tests {
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use proc_macro2::TokenStream; use proc_macro2::TokenStream;
use quote::quote; use quote::quote;
use sea_query::{Alias, ColumnType, ForeignKeyAction, RcOrArc, SeaRc}; use sea_query::{Alias, ColumnType, ForeignKeyAction, RcOrArc, SeaRc, StringLen};
use std::io::{self, BufRead, BufReader, Read}; use std::io::{self, BufRead, BufReader, Read};
fn setup() -> Vec<Entity> { fn setup() -> Vec<Entity> {
@ -993,7 +993,7 @@ mod tests {
}, },
Column { Column {
name: "name".to_owned(), name: "name".to_owned(),
col_type: ColumnType::string(Some(255)), col_type: ColumnType::String(StringLen::N(255)),
auto_increment: false, auto_increment: false,
not_null: true, not_null: true,
unique: false, unique: false,
@ -1020,7 +1020,7 @@ mod tests {
}, },
Column { Column {
name: "name".to_owned(), name: "name".to_owned(),
col_type: ColumnType::string(Some(255)), col_type: ColumnType::String(StringLen::N(255)),
auto_increment: false, auto_increment: false,
not_null: true, not_null: true,
unique: false, unique: false,
@ -1074,7 +1074,7 @@ mod tests {
}, },
Column { Column {
name: "_name_".to_owned(), name: "_name_".to_owned(),
col_type: ColumnType::string(Some(255)), col_type: ColumnType::String(StringLen::N(255)),
auto_increment: false, auto_increment: false,
not_null: true, not_null: true,
unique: false, unique: false,

View File

@ -44,7 +44,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
} }
} }
} }

View File

@ -49,7 +49,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
Self::CakeId => ColumnType::Integer.def().null(), Self::CakeId => ColumnType::Integer.def().null(),
} }
} }

View File

@ -50,7 +50,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
Self::FruitId => ColumnType::Integer.def().null(), Self::FruitId => ColumnType::Integer.def().null(),
} }
} }

View File

@ -48,7 +48,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
} }
} }
} }

View File

@ -53,7 +53,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
Self::CakeId => ColumnType::Integer.def().null(), Self::CakeId => ColumnType::Integer.def().null(),
} }
} }

View File

@ -54,7 +54,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(Some(255u32)).def(), Self::Name => ColumnType::String(StringLen::N(255u32)).def(),
Self::FruitId => ColumnType::Integer.def().null(), Self::FruitId => ColumnType::Integer.def().null(),
} }
} }

View File

@ -60,7 +60,7 @@ mod strum;
/// # fn def(&self) -> ColumnDef { /// # fn def(&self) -> ColumnDef {
/// # match self { /// # match self {
/// # Self::Id => ColumnType::Integer.def(), /// # Self::Id => ColumnType::Integer.def(),
/// # Self::Name => ColumnType::string(None).def(), /// # Self::Name => ColumnType::String(StringLen::None).def(),
/// # } /// # }
/// # } /// # }
/// # } /// # }
@ -344,7 +344,7 @@ pub fn derive_custom_column(input: TokenStream) -> TokenStream {
/// # fn def(&self) -> ColumnDef { /// # fn def(&self) -> ColumnDef {
/// # match self { /// # match self {
/// # Self::Id => ColumnType::Integer.def(), /// # Self::Id => ColumnType::Integer.def(),
/// # Self::Name => ColumnType::string(None).def(), /// # Self::Name => ColumnType::String(StringLen::None).def(),
/// # } /// # }
/// # } /// # }
/// # } /// # }
@ -417,7 +417,7 @@ pub fn derive_model(input: TokenStream) -> TokenStream {
/// # fn def(&self) -> ColumnDef { /// # fn def(&self) -> ColumnDef {
/// # match self { /// # match self {
/// # Self::Id => ColumnType::Integer.def(), /// # Self::Id => ColumnType::Integer.def(),
/// # Self::Name => ColumnType::string(None).def(), /// # Self::Name => ColumnType::String(StringLen::None).def(),
/// # } /// # }
/// # } /// # }
/// # } /// # }
@ -503,7 +503,7 @@ pub fn derive_into_active_model(input: TokenStream) -> TokenStream {
/// # fn def(&self) -> ColumnDef { /// # fn def(&self) -> ColumnDef {
/// # match self { /// # match self {
/// # Self::Id => ColumnType::Integer.def(), /// # Self::Id => ColumnType::Integer.def(),
/// # Self::Name => ColumnType::string(None).def(), /// # Self::Name => ColumnType::String(StringLen::None).def(),
/// # } /// # }
/// # } /// # }
/// # } /// # }

View File

@ -20,7 +20,7 @@ use sea_query::{DynIden, Expr, Nullable, SimpleExpr, Value, ValueType};
/// #[derive(Debug, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)] /// #[derive(Debug, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)]
/// #[sea_orm( /// #[sea_orm(
/// rs_type = "String", /// rs_type = "String",
/// db_type = "string(Some(1))", /// db_type = "String(StringLen::N(1))",
/// enum_name = "category" /// enum_name = "category"
/// )] /// )]
/// pub enum DeriveCategory { /// pub enum DeriveCategory {
@ -74,7 +74,7 @@ use sea_query::{DynIden, Expr, Nullable, SimpleExpr, Value, ValueType};
/// ///
/// fn db_type() -> ColumnDef { /// fn db_type() -> ColumnDef {
/// // The macro attribute `db_type` is being pasted here /// // The macro attribute `db_type` is being pasted here
/// ColumnType::string(Some(1)).def() /// ColumnType::String(StringLen::N(1)).def()
/// } /// }
/// } /// }
/// ``` /// ```
@ -86,7 +86,7 @@ use sea_query::{DynIden, Expr, Nullable, SimpleExpr, Value, ValueType};
/// ///
/// // Define the `Category` active enum /// // Define the `Category` active enum
/// #[derive(Debug, Clone, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)] /// #[derive(Debug, Clone, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)]
/// #[sea_orm(rs_type = "String", db_type = "string(Some(1))")] /// #[sea_orm(rs_type = "String", db_type = "String(StringLen::N(1))")]
/// pub enum Category { /// pub enum Category {
/// #[sea_orm(string_value = "B")] /// #[sea_orm(string_value = "B")]
/// Big, /// Big,
@ -205,7 +205,11 @@ where
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate as sea_orm; use crate as sea_orm;
use crate::{error::*, sea_query::SeaRc, *}; use crate::{
error::*,
sea_query::{SeaRc, StringLen},
*,
};
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
#[test] #[test]
@ -246,14 +250,14 @@ mod tests {
} }
fn db_type() -> ColumnDef { fn db_type() -> ColumnDef {
ColumnType::string(Some(1)).def() ColumnType::String(StringLen::N(1)).def()
} }
} }
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum, DeriveDisplay)] #[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum, DeriveDisplay)]
#[sea_orm( #[sea_orm(
rs_type = "String", rs_type = "String",
db_type = "string(Some(1))", db_type = "String(StringLen::N(1))",
enum_name = "category" enum_name = "category"
)] )]
pub enum DeriveCategory { pub enum DeriveCategory {
@ -293,8 +297,14 @@ mod tests {
Some(DeriveCategory::Small) Some(DeriveCategory::Small)
); );
assert_eq!(Category::db_type(), ColumnType::string(Some(1)).def()); assert_eq!(
assert_eq!(DeriveCategory::db_type(), ColumnType::string(Some(1)).def()); Category::db_type(),
ColumnType::String(StringLen::N(1)).def()
);
assert_eq!(
DeriveCategory::db_type(),
ColumnType::String(StringLen::N(1)).def()
);
assert_eq!( assert_eq!(
Category::name().to_string(), Category::name().to_string(),
@ -496,7 +506,7 @@ mod tests {
#[derive(Clone, Debug, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)] #[derive(Clone, Debug, PartialEq, EnumIter, DeriveActiveEnum, DeriveDisplay)]
#[sea_orm( #[sea_orm(
rs_type = "String", rs_type = "String",
db_type = "string(None)", db_type = "String(StringLen::None)",
enum_name = "conflicting_string_values" enum_name = "conflicting_string_values"
)] )]
pub enum ConflictingStringValues { pub enum ConflictingStringValues {

View File

@ -620,11 +620,15 @@ mod tests {
); );
assert_eq!( assert_eq!(
hello::Column::Twelve.def(), hello::Column::Twelve.def(),
ColumnType::string(None).def().default("twelve_value") ColumnType::String(StringLen::None)
.def()
.default("twelve_value")
); );
assert_eq!( assert_eq!(
hello::Column::TwelveTwo.def(), hello::Column::TwelveTwo.def(),
ColumnType::string(None).def().default("twelve_value") ColumnType::String(StringLen::None)
.def()
.default("twelve_value")
); );
} }

View File

@ -80,7 +80,7 @@
/// fn def(&self) -> ColumnDef { /// fn def(&self) -> ColumnDef {
/// match self { /// match self {
/// Self::Id => ColumnType::Integer.def(), /// Self::Id => ColumnType::Integer.def(),
/// Self::Name => ColumnType::string(None).def(), /// Self::Name => ColumnType::String(StringLen::None).def(),
/// } /// }
/// } /// }
/// } /// }

View File

@ -170,7 +170,7 @@ mod tests {
#[derive(Clone, Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[derive(Clone, Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
#[sea_orm( #[sea_orm(
rs_type = "String", rs_type = "String",
db_type = "string(Some(1))", db_type = "String(StringLen::N(1))",
enum_name = "category" enum_name = "category"
)] )]
pub enum DeriveCategory { pub enum DeriveCategory {

View File

@ -46,7 +46,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
} }
} }
} }

View File

@ -58,7 +58,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
Self::VendorId => ColumnType::Integer.def().nullable(), Self::VendorId => ColumnType::Integer.def().nullable(),
} }
} }

View File

@ -49,7 +49,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
Self::Tea => Tea::db_type().def(), Self::Tea => Tea::db_type().def(),
} }
} }

View File

@ -48,7 +48,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef { fn def(&self) -> ColumnDef {
match self { match self {
Self::Id => ColumnType::Integer.def(), Self::Id => ColumnType::Integer.def(),
Self::Name => ColumnType::string(None).def(), Self::Name => ColumnType::String(StringLen::None).def(),
} }
} }
} }

View File

@ -65,6 +65,6 @@ impl ValueType for Events {
} }
fn column_type() -> ColumnType { fn column_type() -> ColumnType {
ColumnType::Array(RcOrArc::new(ColumnType::string(None))) ColumnType::Array(RcOrArc::new(ColumnType::String(StringLen::None)))
} }
} }

View File

@ -508,7 +508,7 @@ pub async fn create_event_trigger_table(db: &DbConn) -> Result<ExecResult, DbErr
) )
.col( .col(
ColumnDef::new(event_trigger::Column::Events) ColumnDef::new(event_trigger::Column::Events)
.array(sea_query::ColumnType::string(None)) .array(sea_query::ColumnType::String(StringLen::None))
.not_null(), .not_null(),
) )
.to_owned(); .to_owned();
@ -590,7 +590,10 @@ pub async fn create_categories_table(db: &DbConn) -> Result<ExecResult, DbErr> {
.not_null() .not_null()
.primary_key(), .primary_key(),
) )
.col(ColumnDef::new(categories::Column::Categories).array(ColumnType::string(Some(1)))) .col(
ColumnDef::new(categories::Column::Categories)
.array(ColumnType::String(StringLen::N(1))),
)
.to_owned(); .to_owned();
create_table(db, &create_table_stmt, Categories).await create_table(db, &create_table_stmt, Categories).await
@ -733,7 +736,7 @@ pub async fn create_value_type_postgres_table(db: &DbConn) -> Result<ExecResult,
) )
.col( .col(
ColumnDef::new(json_vec::Column::StrVec) ColumnDef::new(json_vec::Column::StrVec)
.array(sea_query::ColumnType::string(None)) .array(sea_query::ColumnType::String(StringLen::None))
.not_null(), .not_null(),
) )
.to_owned(); .to_owned();

View File

@ -1,7 +1,7 @@
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
#[sea_orm(rs_type = "String", db_type = "string(Some(1))")] #[sea_orm(rs_type = "String", db_type = "String(StringLen::N(1))")]
pub enum Category { pub enum Category {
#[sea_orm(string_value = "B")] #[sea_orm(string_value = "B")]
Big, Big,

View File

@ -75,7 +75,7 @@ pub fn type_test() {
// self implied // self implied
assert_eq!( assert_eq!(
StringVec::column_type(), StringVec::column_type(),
ColumnType::Array(Arc::new(ColumnType::string(None))) ColumnType::Array(Arc::new(ColumnType::String(StringLen::None)))
); );
assert_eq!(StringVec::array_type(), ArrayType::String); assert_eq!(StringVec::array_type(), ArrayType::String);
} }