Skip to content

Commit 48e9be4

Browse files
authored
Merge pull request #2962 from SeedCompany/edgedb-budget-and-budget-record-schema
2 parents 3e98048 + 5353785 commit 48e9be4

File tree

5 files changed

+130
-0
lines changed

5 files changed

+130
-0
lines changed

dbschema/budget.esdl

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
module default {
2+
type Budget extending Project::Child {
3+
required status: Budget::Status {
4+
default := Budget::Status.Pending;
5+
};
6+
7+
universalTemplate: File;
8+
9+
records := .<budget[is Budget::Record];
10+
}
11+
}
12+
13+
module Budget {
14+
type Record extending Project::Child {
15+
constraint exclusive on ((.budget, .fiscalYear, .organization));
16+
17+
required fiscalYear: int16 {
18+
readonly := true;
19+
};
20+
21+
amount: float32;
22+
23+
required budget: default::Budget {
24+
readonly := true;
25+
on target delete delete source;
26+
};
27+
28+
required organization: default::Organization {
29+
readonly := true;
30+
on target delete delete source;
31+
};
32+
}
33+
34+
scalar type Status extending enum<
35+
Pending,
36+
Current,
37+
Superceded,
38+
Rejected
39+
>;
40+
}

dbschema/engagement.esdl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ module default {
7575
trigger connectDedicationCeremony after insert for each do (
7676
insert Engagement::DedicationCeremony {
7777
createdAt := datetime_of_statement(),
78+
modifiedAt := datetime_of_statement(),
7879
engagement := __new__,
7980
project := __new__.project,
8081
projectContext := __new__.projectContext,
@@ -128,6 +129,7 @@ module default {
128129
trigger connectCertificationCeremony after insert for each do (
129130
insert Engagement::CertificationCeremony {
130131
createdAt := datetime_of_statement(),
132+
modifiedAt := datetime_of_statement(),
131133
engagement := __new__,
132134
project := __new__.project,
133135
projectContext := __new__.projectContext,

dbschema/migrations/00030.edgeql

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
CREATE MIGRATION m1f6w2tfwomhiwhtzwnpraqfo24x3rnfcpnntt7nxe5f5l7utyjzpa
2+
ONTO m1t7atw76jdjhcnrngoj5euzbz7qxve7dokvbhh4x5333yxm5klkwa
3+
{
4+
CREATE MODULE Budget IF NOT EXISTS;
5+
CREATE TYPE Budget::Record EXTENDING Project::Child {
6+
CREATE REQUIRED LINK organization: default::Organization {
7+
ON TARGET DELETE DELETE SOURCE;
8+
SET readonly := true;
9+
};
10+
CREATE REQUIRED PROPERTY fiscalYear: std::int16 {
11+
SET readonly := true;
12+
};
13+
CREATE PROPERTY amount: std::float32;
14+
};
15+
CREATE SCALAR TYPE Budget::Status EXTENDING enum<Pending, Current, Superceded, Rejected>;
16+
CREATE TYPE default::Budget EXTENDING Project::Child {
17+
CREATE LINK universalTemplate: default::File;
18+
CREATE REQUIRED PROPERTY status: Budget::Status {
19+
SET default := (Budget::Status.Pending);
20+
};
21+
};
22+
ALTER TYPE Budget::Record {
23+
CREATE REQUIRED LINK budget: default::Budget {
24+
ON TARGET DELETE DELETE SOURCE;
25+
SET readonly := true;
26+
};
27+
CREATE CONSTRAINT std::exclusive ON ((.budget, .fiscalYear, .organization));
28+
};
29+
ALTER TYPE default::Budget {
30+
CREATE LINK records := (.<budget[IS Budget::Record]);
31+
};
32+
ALTER TYPE default::Project {
33+
CREATE TRIGGER createBudgetOnInsert
34+
AFTER INSERT
35+
FOR EACH DO (INSERT
36+
default::Budget
37+
{
38+
createdAt := std::datetime_of_statement(),
39+
project := __new__,
40+
projectContext := __new__.projectContext
41+
});
42+
};
43+
};

dbschema/migrations/00031.edgeql

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
CREATE MIGRATION m1wzaeho6j66fhwcmgkeezkp52hqwxgc27uy7yqsdgml3qekc2iarq
2+
ONTO m1f6w2tfwomhiwhtzwnpraqfo24x3rnfcpnntt7nxe5f5l7utyjzpa
3+
{
4+
ALTER TYPE default::InternshipEngagement {
5+
ALTER TRIGGER connectCertificationCeremony USING (INSERT
6+
Engagement::CertificationCeremony
7+
{
8+
createdAt := std::datetime_of_statement(),
9+
modifiedAt := std::datetime_of_statement(),
10+
engagement := __new__,
11+
project := __new__.project,
12+
projectContext := __new__.projectContext
13+
});
14+
};
15+
ALTER TYPE default::Project {
16+
ALTER TRIGGER createBudgetOnInsert USING (INSERT
17+
default::Budget
18+
{
19+
createdAt := std::datetime_of_statement(),
20+
modifiedAt := std::datetime_of_statement(),
21+
project := __new__,
22+
projectContext := __new__.projectContext
23+
});
24+
};
25+
ALTER TYPE default::LanguageEngagement {
26+
ALTER TRIGGER connectDedicationCeremony USING (INSERT
27+
Engagement::DedicationCeremony
28+
{
29+
createdAt := std::datetime_of_statement(),
30+
modifiedAt := std::datetime_of_statement(),
31+
engagement := __new__,
32+
project := __new__.project,
33+
projectContext := __new__.projectContext
34+
});
35+
};
36+
};

dbschema/project.esdl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ module default {
6060
message := "A Project's own context should be itself (no more or less)"
6161
)
6262
);
63+
64+
trigger createBudgetOnInsert after insert for each do (
65+
insert default::Budget {
66+
createdAt := datetime_of_statement(),
67+
modifiedAt := datetime_of_statement(),
68+
project := __new__,
69+
projectContext := __new__.projectContext,
70+
}
71+
);
6372
}
6473

6574
type TranslationProject extending Project {

0 commit comments

Comments
 (0)