|
| 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 | +}; |
0 commit comments