Skip to content

Commit 51e34c8

Browse files
authored
Merge pull request #3046 from SeedCompany/edgedb/posts
2 parents 153626d + 3db1ef1 commit 51e34c8

File tree

7 files changed

+135
-3
lines changed

7 files changed

+135
-3
lines changed

dbschema/language.esdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module default {
2-
type Language extending Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
2+
type Language extending Mixin::Postable, Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
33
required displayName: str {
44
default := .name;
55
}

dbschema/migrations/00038.edgeql

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
CREATE MIGRATION m1wdw2srbtq3ondtyuhcobwgcbdawourtp4vcapedti3kca2wh46dq
2+
ONTO m1xzy4deu3w7kduilieoiydxysopymo7skj4sftggjen4vi3og6kaq
3+
{
4+
CREATE MODULE Post IF NOT EXISTS;
5+
CREATE ABSTRACT TYPE Mixin::Embedded {
6+
CREATE REQUIRED SINGLE LINK container: default::Resource;
7+
};
8+
CREATE SCALAR TYPE Post::Shareability EXTENDING enum<Membership, Internal, AskToShareExternally, External>;
9+
CREATE SCALAR TYPE Post::Type EXTENDING enum<Note, Story, Prayer>;
10+
CREATE TYPE default::Post EXTENDING default::Resource, Mixin::Embedded, Mixin::Owned {
11+
ALTER LINK container {
12+
SET SINGLE;
13+
ON TARGET DELETE DELETE SOURCE;
14+
SET OWNED;
15+
SET REQUIRED;
16+
};
17+
CREATE SINGLE PROPERTY isMember := (.container[IS Project::ContextAware].isMember);
18+
CREATE SINGLE PROPERTY sensitivity := (.container[IS Project::ContextAware].sensitivity);
19+
CREATE REQUIRED PROPERTY body: std::json;
20+
CREATE REQUIRED PROPERTY shareability: Post::Shareability;
21+
CREATE REQUIRED PROPERTY type: Post::Type;
22+
};
23+
CREATE ABSTRACT TYPE Mixin::Postable EXTENDING default::Resource {
24+
CREATE LINK posts := (.<container[IS default::Post]);
25+
};
26+
ALTER TYPE default::Post {
27+
CREATE TRIGGER enforcePostable
28+
AFTER UPDATE, INSERT
29+
FOR EACH DO (std::assert((__new__.container IS Mixin::Postable), message := "A Post's container must be a Postable"));
30+
};
31+
ALTER TYPE Scripture::Verse {
32+
ALTER PROPERTY chapter {
33+
DROP CONSTRAINT std::min_value(1);
34+
};
35+
};
36+
ALTER TYPE Scripture::Verse {
37+
ALTER PROPERTY chapter {
38+
CREATE CONSTRAINT std::min_value(1);
39+
};
40+
};
41+
ALTER TYPE Scripture::Verse {
42+
ALTER PROPERTY verse {
43+
DROP CONSTRAINT std::min_value(1);
44+
};
45+
};
46+
ALTER TYPE Scripture::Verse {
47+
ALTER PROPERTY verse {
48+
CREATE CONSTRAINT std::min_value(1);
49+
};
50+
};
51+
ALTER TYPE Scripture::Verse {
52+
ALTER PROPERTY verseId {
53+
DROP CONSTRAINT std::min_value(0);
54+
};
55+
};
56+
ALTER TYPE Scripture::Verse {
57+
ALTER PROPERTY verseId {
58+
CREATE CONSTRAINT std::min_value(0);
59+
};
60+
};
61+
ALTER TYPE default::FundingAccount {
62+
ALTER PROPERTY accountNumber {
63+
DROP CONSTRAINT std::min_value(0);
64+
};
65+
};
66+
ALTER TYPE default::FundingAccount {
67+
ALTER PROPERTY accountNumber {
68+
CREATE CONSTRAINT std::min_value(0);
69+
};
70+
};
71+
ALTER TYPE default::Project {
72+
ALTER PROPERTY departmentId {
73+
DROP CONSTRAINT std::min_value(10000);
74+
};
75+
};
76+
ALTER TYPE default::Project {
77+
ALTER PROPERTY departmentId {
78+
CREATE CONSTRAINT std::min_value(10000);
79+
};
80+
};
81+
ALTER SCALAR TYPE default::population {
82+
DROP CONSTRAINT std::min_value(0);
83+
};
84+
ALTER SCALAR TYPE default::population {
85+
CREATE CONSTRAINT std::min_value(0);
86+
};
87+
};

dbschema/migrations/00039.edgeql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CREATE MIGRATION m1zqlgbrht5kontkpocymsg2f7wit5rsxkmgy6uy56myfyhncrvlvq
2+
ONTO m1wdw2srbtq3ondtyuhcobwgcbdawourtp4vcapedti3kca2wh46dq
3+
{
4+
ALTER TYPE default::Project EXTENDING Mixin::Postable BEFORE default::Resource;
5+
ALTER TYPE default::Language EXTENDING Mixin::Postable BEFORE default::Resource;
6+
ALTER TYPE default::Partner EXTENDING Mixin::Postable BEFORE default::Resource;
7+
};

dbschema/partner.esdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module default {
2-
type Partner extending Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
2+
type Partner extending Mixin::Postable, Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
33
overloaded name {
44
constraint exclusive;
55
}

dbschema/post.esdl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
module default {
2+
type Post extending Resource, Mixin::Embedded, Mixin::Owned {
3+
# https://github.com/edgedb/edgedb/issues/6695
4+
# overloaded required single link container: Mixin::Postable
5+
overloaded required single link container {
6+
on target delete delete source;
7+
};
8+
trigger enforcePostable after insert, update for each do (
9+
assert(
10+
__new__.container is Mixin::Postable,
11+
message := "A Post's container must be a Postable"
12+
)
13+
);
14+
15+
required type: Post::Type;
16+
required shareability: Post::Shareability;
17+
required body: json;
18+
19+
single property sensitivity := .container[is Project::ContextAware].sensitivity;
20+
single property isMember := .container[is Project::ContextAware].isMember;
21+
}
22+
}
23+
24+
module Mixin {
25+
abstract type Postable extending default::Resource {
26+
posts := .<container[is default::Post];
27+
}
28+
}
29+
30+
module Post {
31+
scalar type Type extending enum<Note, Story, Prayer>;
32+
scalar type Shareability extending enum<Membership, Internal, AskToShareExternally, External>;
33+
}

dbschema/project.esdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module default {
2-
abstract type Project extending Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
2+
abstract type Project extending Mixin::Postable, Resource, Project::ContextAware, Mixin::Named, Mixin::Pinnable, Mixin::Taggable {
33
overloaded name {
44
constraint exclusive;
55
};

dbschema/z.embedded.esdl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module Mixin {
2+
abstract type Embedded {
3+
required single link container: default::Resource;
4+
}
5+
}

0 commit comments

Comments
 (0)