sea_orm_codegen/entity/writer/
expanded.rs1use super::*;
2
3impl EntityWriter {
4 #[allow(clippy::too_many_arguments)]
5 pub fn gen_expanded_code_blocks(
6 entity: &Entity,
7 with_serde: &WithSerde,
8 column_option: &ColumnOption,
9 schema_name: &Option<String>,
10 serde_skip_deserializing_primary_key: bool,
11 serde_skip_hidden_column: bool,
12 model_extra_derives: &TokenStream,
13 model_extra_attributes: &TokenStream,
14 column_extra_derives: &TokenStream,
15 seaography: bool,
16 impl_active_model_behavior: bool,
17 ) -> Vec<TokenStream> {
18 let mut imports = Self::gen_import(with_serde);
19 imports.extend(Self::gen_import_active_enum(entity));
20 let mut code_blocks = vec![
21 imports,
22 Self::gen_entity_struct(),
23 Self::gen_impl_entity_name(entity, schema_name),
24 Self::gen_expanded_model_struct(
25 entity,
26 with_serde,
27 column_option,
28 serde_skip_deserializing_primary_key,
29 serde_skip_hidden_column,
30 model_extra_derives,
31 model_extra_attributes,
32 ),
33 Self::gen_column_enum(entity, column_extra_derives),
34 Self::gen_primary_key_enum(entity),
35 Self::gen_impl_primary_key(entity, column_option),
36 Self::gen_relation_enum(entity),
37 Self::gen_impl_column_trait(entity),
38 Self::gen_impl_relation_trait(entity),
39 ];
40 code_blocks.extend(Self::gen_impl_related(entity));
41 code_blocks.extend(Self::gen_impl_conjunct_related(entity));
42 if impl_active_model_behavior {
43 code_blocks.extend([Self::impl_active_model_behavior()]);
44 }
45 if seaography {
46 code_blocks.extend([Self::gen_related_entity(entity)]);
47 }
48 code_blocks
49 }
50
51 pub fn gen_expanded_model_struct(
52 entity: &Entity,
53 with_serde: &WithSerde,
54 column_option: &ColumnOption,
55 serde_skip_deserializing_primary_key: bool,
56 serde_skip_hidden_column: bool,
57 model_extra_derives: &TokenStream,
58 model_extra_attributes: &TokenStream,
59 ) -> TokenStream {
60 let column_names_snake_case = entity.get_column_names_snake_case();
61 let column_rs_types = entity.get_column_rs_types(column_option);
62 let if_eq_needed = entity.get_eq_needed();
63 let serde_attributes = entity.get_column_serde_attributes(
64 serde_skip_deserializing_primary_key,
65 serde_skip_hidden_column,
66 );
67 let extra_derive = with_serde.extra_derive();
68
69 quote! {
70 #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel #if_eq_needed #extra_derive #model_extra_derives)]
71 #model_extra_attributes
72 pub struct Model {
73 #(
74 #serde_attributes
75 pub #column_names_snake_case: #column_rs_types,
76 )*
77 }
78 }
79 }
80}