sea_orm_codegen/entity/writer/
frontend.rs1use super::*;
2
3impl EntityWriter {
4 #[allow(clippy::too_many_arguments)]
5 pub fn gen_frontend_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_serde(with_serde);
19 imports.extend(Self::gen_import_active_enum(entity));
20 let code_blocks = vec![
21 imports,
22 Self::gen_frontend_model_struct(
23 entity,
24 with_serde,
25 column_option,
26 schema_name,
27 serde_skip_deserializing_primary_key,
28 serde_skip_hidden_column,
29 model_extra_derives,
30 model_extra_attributes,
31 ),
32 ];
33 code_blocks
34 }
35
36 #[allow(clippy::too_many_arguments)]
37 pub fn gen_frontend_model_struct(
38 entity: &Entity,
39 with_serde: &WithSerde,
40 column_option: &ColumnOption,
41 _schema_name: &Option<String>,
42 serde_skip_deserializing_primary_key: bool,
43 serde_skip_hidden_column: bool,
44 model_extra_derives: &TokenStream,
45 model_extra_attributes: &TokenStream,
46 ) -> TokenStream {
47 let column_names_snake_case = entity.get_column_names_snake_case();
48 let column_rs_types = entity.get_column_rs_types(column_option);
49 let if_eq_needed = entity.get_eq_needed();
50 let primary_keys: Vec<String> = entity
51 .primary_keys
52 .iter()
53 .map(|pk| pk.name.clone())
54 .collect();
55 let attrs: Vec<TokenStream> = entity
56 .columns
57 .iter()
58 .map(|col| {
59 let is_primary_key = primary_keys.contains(&col.name);
60 col.get_serde_attribute(
61 is_primary_key,
62 serde_skip_deserializing_primary_key,
63 serde_skip_hidden_column,
64 )
65 })
66 .collect();
67 let extra_derive = with_serde.extra_derive();
68
69 quote! {
70 #[derive(Clone, Debug, PartialEq #if_eq_needed #extra_derive #model_extra_derives)]
71 #model_extra_attributes
72 pub struct Model {
73 #(
74 #attrs
75 pub #column_names_snake_case: #column_rs_types,
76 )*
77 }
78 }
79 }
80}