immigrant_schema/
mixin.rs1use crate::attribute::AttributeList;
2use crate::column::Column;
3use crate::id_impls;
4use crate::names::{MixinIdent, MixinKind};
5use crate::table::{ForeignKey, TableAnnotation};
6use crate::uid::{next_uid, OwnUid};
7
8#[derive(Debug)]
9pub struct Mixin {
10 uid: OwnUid,
11 name: MixinIdent,
12 pub docs: Vec<String>,
13 pub attrlist: AttributeList,
14 pub columns: Vec<Column>,
15 pub annotations: Vec<TableAnnotation>,
16 pub foreign_keys: Vec<ForeignKey>,
17 pub mixins: Vec<MixinIdent>,
18}
19id_impls!(Mixin, MixinKind);
20impl Mixin {
21 pub fn new(
22 docs: Vec<String>,
23 attrlist: AttributeList,
24 name: MixinIdent,
25 columns: Vec<Column>,
26 annotations: Vec<TableAnnotation>,
27 foreign_keys: Vec<ForeignKey>,
28 mixins: Vec<MixinIdent>,
29 ) -> Self {
30 Self {
31 uid: next_uid(),
32 name,
33 docs,
34 attrlist,
35 columns,
36 annotations,
37 foreign_keys,
38 mixins,
39 }
40 }
41}