immigrant_schema/
mixin.rs

1use 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}