Incorporate requested CR changes
This commit is contained in:
parent
b6c5d71fe2
commit
d9306126cf
@ -59,4 +59,3 @@ runtime-tokio-rustls = [
|
|||||||
"sqlx/runtime-tokio-rustls",
|
"sqlx/runtime-tokio-rustls",
|
||||||
"sea-schema/runtime-tokio-rustls",
|
"sea-schema/runtime-tokio-rustls",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -27,6 +27,37 @@ pub enum WithSerde {
|
|||||||
Both,
|
Both,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl WithSerde {
|
||||||
|
pub fn extra_derive(&self) -> TokenStream {
|
||||||
|
let mut extra_derive = match self {
|
||||||
|
Self::None => {
|
||||||
|
quote! {}
|
||||||
|
}
|
||||||
|
Self::Serialize => {
|
||||||
|
quote! {
|
||||||
|
Serialize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Self::Deserialize => {
|
||||||
|
quote! {
|
||||||
|
Deserialize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Self::Both => {
|
||||||
|
quote! {
|
||||||
|
Serialize, Deserialize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if !extra_derive.is_empty() {
|
||||||
|
extra_derive = quote! { , #extra_derive }
|
||||||
|
}
|
||||||
|
|
||||||
|
extra_derive
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl FromStr for WithSerde {
|
impl FromStr for WithSerde {
|
||||||
type Err = crate::Error;
|
type Err = crate::Error;
|
||||||
|
|
||||||
@ -171,29 +202,29 @@ impl EntityWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn gen_import(with_serde: &WithSerde) -> TokenStream {
|
pub fn gen_import(with_serde: &WithSerde) -> TokenStream {
|
||||||
match with_serde {
|
let prelude_import = quote!(
|
||||||
WithSerde::None => {
|
|
||||||
quote! {
|
|
||||||
use sea_orm::entity::prelude::*;
|
use sea_orm::entity::prelude::*;
|
||||||
}
|
);
|
||||||
}
|
|
||||||
|
match with_serde {
|
||||||
|
WithSerde::None => prelude_import,
|
||||||
WithSerde::Serialize => {
|
WithSerde::Serialize => {
|
||||||
quote! {
|
quote! {
|
||||||
use sea_orm::entity::prelude::*;
|
#prelude_import
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WithSerde::Deserialize => {
|
WithSerde::Deserialize => {
|
||||||
quote! {
|
quote! {
|
||||||
use sea_orm::entity::prelude::*;
|
#prelude_import
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WithSerde::Both => {
|
WithSerde::Both => {
|
||||||
quote! {
|
quote! {
|
||||||
use sea_orm::entity::prelude::*;
|
#prelude_import
|
||||||
use serde::{Deserialize,Serialize};
|
use serde::{Deserialize,Serialize};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -222,44 +253,16 @@ impl EntityWriter {
|
|||||||
let column_names_snake_case = entity.get_column_names_snake_case();
|
let column_names_snake_case = entity.get_column_names_snake_case();
|
||||||
let column_rs_types = entity.get_column_rs_types();
|
let column_rs_types = entity.get_column_rs_types();
|
||||||
|
|
||||||
match with_serde {
|
let extra_derive = with_serde.extra_derive();
|
||||||
WithSerde::None => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)]
|
|
||||||
pub struct Model {
|
|
||||||
#(pub #column_names_snake_case: #column_rs_types,)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
WithSerde::Serialize => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Serialize)]
|
|
||||||
pub struct Model {
|
|
||||||
#(pub #column_names_snake_case: #column_rs_types,)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
WithSerde::Deserialize => {
|
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Deserialize)]
|
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel #extra_derive)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#(pub #column_names_snake_case: #column_rs_types,)*
|
#(pub #column_names_snake_case: #column_rs_types,)*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WithSerde::Both => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Serialize, Deserialize)]
|
|
||||||
pub struct Model {
|
|
||||||
#(pub #column_names_snake_case: #column_rs_types,)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_column_enum(entity: &Entity) -> TokenStream {
|
pub fn gen_column_enum(entity: &Entity) -> TokenStream {
|
||||||
let column_names_camel_case = entity.get_column_names_camel_case();
|
let column_names_camel_case = entity.get_column_names_camel_case();
|
||||||
quote! {
|
quote! {
|
||||||
@ -453,35 +456,10 @@ impl EntityWriter {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
match with_serde {
|
let extra_derive = with_serde.extra_derive();
|
||||||
WithSerde::None => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
|
|
||||||
#[sea_orm(table_name = #table_name)]
|
|
||||||
pub struct Model {
|
|
||||||
#(
|
|
||||||
#attrs
|
|
||||||
pub #column_names_snake_case: #column_rs_types,
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
WithSerde::Serialize => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize)]
|
|
||||||
#[sea_orm(table_name = #table_name)]
|
|
||||||
pub struct Model {
|
|
||||||
#(
|
|
||||||
#attrs
|
|
||||||
pub #column_names_snake_case: #column_rs_types,
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
WithSerde::Deserialize => {
|
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Deserialize)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel #extra_derive)]
|
||||||
#[sea_orm(table_name = #table_name)]
|
#[sea_orm(table_name = #table_name)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#(
|
#(
|
||||||
@ -492,21 +470,6 @@ impl EntityWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WithSerde::Both => {
|
|
||||||
quote! {
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
|
|
||||||
#[sea_orm(table_name = #table_name)]
|
|
||||||
pub struct Model {
|
|
||||||
#(
|
|
||||||
#attrs
|
|
||||||
pub #column_names_snake_case: #column_rs_types,
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_compact_relation_enum(entity: &Entity) -> TokenStream {
|
pub fn gen_compact_relation_enum(entity: &Entity) -> TokenStream {
|
||||||
let relation_ref_tables_camel_case = entity.get_relation_ref_tables_camel_case();
|
let relation_ref_tables_camel_case = entity.get_relation_ref_tables_camel_case();
|
||||||
let attrs = entity.get_relation_attrs();
|
let attrs = entity.get_relation_attrs();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user