Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions dbschema/approver.gel
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module Business {
scalar type `Group` extending enum<
Development,
FieldGrowth,
FieldOperations,
Finance,
MarketingCommunications,
OfficeOfThePresident,
People,
Technology,
> {
annotation description := "\
Each group (formerly domain) within Seed Company. \
OrganizationGroup was avoided to not be ambiguous with our Organizations here.";
}
}

module Program {
type Approver {
annotation description := "\
Certain users are approvers on behalf of their group for certain programs / project types.";

required user: default::User {
constraint exclusive;
};
required multi programs: Project::Type;
required multi groups: Business::Group;
}
}
37 changes: 37 additions & 0 deletions dbschema/migrations/00015-m16fwsg.edgeql

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion dbschema/project.gel
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,10 @@ module default {

multi link members := .<project[is Project::Member];
single link membership := (select .members filter .user = global default::currentUser limit 1);


multi link approvers := (select Program::Approver filter Project.type in .programs);
single link approver := (select .approvers filter .user = global default::currentUser limit 1);

# multi link engagements := .<project[is Engagement];
property engagementTotal := count(.<project[is Engagement]);

Expand Down Expand Up @@ -181,6 +184,10 @@ module Project {
max(.projectContext.projects.ownSensitivity)
?? (.ownSensitivity ?? default::Sensitivity.High);
required single property isMember := exists .projectContext.projects.membership;
required single property isFinancialApprover := exists (
select .projectContext.projects.approver
filter Business::Group.Finance in .groups
);
}

scalar type Type extending enum<
Expand Down