Skip to content

Commit

Permalink
Migration
Browse files Browse the repository at this point in the history
  • Loading branch information
hbriese committed Sep 18, 2023
1 parent a364253 commit 74ea3cb
Show file tree
Hide file tree
Showing 7 changed files with 243 additions and 220 deletions.
116 changes: 59 additions & 57 deletions api/dbschema/edgeql-js/__spec__.ts

Large diffs are not rendered by default.

26 changes: 20 additions & 6 deletions api/dbschema/edgeql-js/castMaps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ export type scalarAssignableBy<T extends $.ScalarType> =
T extends _std.$bigint ? _std.$bigint :
T extends _default.$uint16 ? _default.$uint16 :
T extends _std.$int32 ? _std.$int32 :
T extends _default.$current_accounts ? _default.$current_accounts :
T extends _default.$current_accounts_set ? _default.$current_accounts_set :
T extends _default.$id_b9af7bad55b911eeb17bcf816eb97440 ? _default.$id_b9af7bad55b911eeb17bcf816eb97440 :
T extends _std.$uuid ? _std.$uuid :
T extends _default.$TransferDirection ? _default.$TransferDirection :
T extends _default.$TransactionProposalStatus ? _default.$TransactionProposalStatus :
Expand Down Expand Up @@ -105,7 +106,8 @@ export type scalarCastableFrom<T extends $.ScalarType> =
T extends _std.$bigint ? _std.$bigint :
T extends _default.$uint16 ? _default.$uint16 :
T extends _std.$int32 ? _std.$int32 :
T extends _default.$current_accounts ? _default.$current_accounts :
T extends _default.$current_accounts_set ? _default.$current_accounts_set :
T extends _default.$id_b9af7bad55b911eeb17bcf816eb97440 ? _default.$id_b9af7bad55b911eeb17bcf816eb97440 :
T extends _std.$uuid ? _std.$uuid :
T extends _default.$TransferDirection ? _default.$TransferDirection :
T extends _default.$TransactionProposalStatus ? _default.$TransactionProposalStatus :
Expand Down Expand Up @@ -346,8 +348,14 @@ type getSharedParentScalar<A, B> =
:
never
:
A extends _default.$current_accounts ?
B extends _default.$current_accounts ?
A extends _default.$current_accounts_set ?
B extends _default.$current_accounts_set ?
B
:
never
:
A extends _default.$id_b9af7bad55b911eeb17bcf816eb97440 ?
B extends _default.$id_b9af7bad55b911eeb17bcf816eb97440 ?
B
:
never
Expand Down Expand Up @@ -711,8 +719,14 @@ function getSharedParentScalar<A extends $.ScalarType, B extends $.ScalarType>(a
}
throw new Error(`Types are not castable: ${a.__name__}, ${b.__name__}`);
}
if (a.__name__ === "default::current_accounts") {
if(b.__name__ === "default::current_accounts") {
if (a.__name__ === "default::current_accounts_set") {
if(b.__name__ === "default::current_accounts_set") {
return b;
}
throw new Error(`Types are not castable: ${a.__name__}, ${b.__name__}`);
}
if (a.__name__ === "default::_id") {
if(b.__name__ === "default::_id") {
return b;
}
throw new Error(`Types are not castable: ${a.__name__}, ${b.__name__}`);
Expand Down
162 changes: 95 additions & 67 deletions api/dbschema/edgeql-js/modules/default.ts

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion api/dbschema/edgeql-js/modules/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -673,12 +673,14 @@ export type $ObjectTypeλShape = $.typeutil.flatten<$SourceλShape & Omit<$Consi
"<__type__[is schema::ObjectType]": $.LinkDesc<$ObjectType, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is schema::Extension]": $.LinkDesc<$Extension, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Receipt]": $.LinkDesc<_default.$Receipt, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is CloudShare]": $.LinkDesc<_default.$CloudShare, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Approver]": $.LinkDesc<_default.$Approver, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Target]": $.LinkDesc<_default.$Target, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is ContractTarget]": $.LinkDesc<_default.$ContractTarget, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is current_approver]": $.LinkDesc<_default.$current_approver, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Token]": $.LinkDesc<_default.$Token, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Account]": $.LinkDesc<_default.$Account, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is current_accounts]": $.LinkDesc<_default.$current_accounts, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is ProposalResponse]": $.LinkDesc<_default.$ProposalResponse, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Approval]": $.LinkDesc<_default.$Approval, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Proposal]": $.LinkDesc<_default.$Proposal, $.Cardinality.Many, {}, false, false, false, false>;
Expand All @@ -704,7 +706,6 @@ export type $ObjectTypeλShape = $.typeutil.flatten<$SourceλShape & Omit<$Consi
"<__type__[is ProposalRiskLabel]": $.LinkDesc<_default.$ProposalRiskLabel, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Function]": $.LinkDesc<_default.$Function, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is Contract]": $.LinkDesc<_default.$Contract, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__[is CloudShare]": $.LinkDesc<_default.$CloudShare, $.Cardinality.Many, {}, false, false, false, false>;
"<__type__": $.LinkDesc<$.ObjectType, $.Cardinality.Many, {}, false, false, false, false>;
"<intersection_of": $.LinkDesc<$.ObjectType, $.Cardinality.Many, {}, false, false, false, false>;
"<subject": $.LinkDesc<$.ObjectType, $.Cardinality.Many, {}, false, false, false, false>;
Expand Down
8 changes: 5 additions & 3 deletions api/dbschema/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,14 @@ export interface Approval extends ProposalResponse {
}
export interface Approver extends std.$Object {
"bluetoothDevices"?: string[] | null;
"cloud"?: CloudShare | null;
"address": string;
"name"?: string | null;
"pushToken"?: string | null;
"accounts": Account[];
"user": User;
"contact"?: Contact | null;
"label"?: string | null;
"cloud"?: CloudShare | null;
}
export type CloudProvider = "Apple" | "Google";
export interface CloudShare extends std.$Object {
Expand Down Expand Up @@ -130,10 +130,10 @@ export interface Proposal extends std.$Object {
"label"?: string | null;
"approvals": Approval[];
"rejections": Rejection[];
"riskLabel"?: ProposalRisk | null;
"policy"?: Policy | null;
"potentialApprovers": Approver[];
"potentialRejectors": Approver[];
"riskLabel"?: ProposalRisk | null;
}
export interface MessageProposal extends Proposal {
"message": string;
Expand Down Expand Up @@ -249,11 +249,12 @@ export interface TransfersConfig extends std.$Object {
}
export interface User extends std.$Object {
"name"?: string | null;
"photoUri"?: string | null;
"approvers": Approver[];
"accounts": Account[];
"contacts": Contact[];
"photoUri"?: string | null;
}
export interface current_accounts extends Account {}
export interface current_approver extends Approver {}
export interface current_user extends User {}
export namespace schema {
Expand Down Expand Up @@ -531,6 +532,7 @@ export interface types {
"TransferLimit": TransferLimit;
"TransfersConfig": TransfersConfig;
"User": User;
"current_accounts": current_accounts;
"current_approver": current_approver;
"current_user": current_user;
};
Expand Down
93 changes: 62 additions & 31 deletions api/dbschema/migrations/00001.edgeql
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE MIGRATION m1nzn2nnrlbdshjgquvdlmotag2ti4gt6aiqeihhhqqv627rq5rvba
ONTO initial
{
CREATE SCALAR TYPE default::Bytes EXTENDING std::str {
CREATE CONSTRAINT std::regexp('0x(?:[0-9a-fA-F]{2})*$');
};
CREATE GLOBAL default::current_accounts_array -> array<std::uuid>;
CREATE GLOBAL default::current_accounts := (SELECT
std::array_unpack(GLOBAL default::current_accounts_array)
);
CREATE SCALAR TYPE default::Address EXTENDING std::str {
CREATE CONSTRAINT std::regexp('^0x[0-9a-fA-F]{40}$');
};
CREATE GLOBAL default::current_approver_address -> default::Address;
CREATE SCALAR TYPE default::MAC EXTENDING std::str {
CREATE CONSTRAINT std::regexp('^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$');
};
CREATE GLOBAL default::current_accounts_set := (std::array_unpack(GLOBAL default::current_accounts_array));
CREATE TYPE default::Receipt {
CREATE REQUIRED PROPERTY responses: array<default::Bytes>;
CREATE REQUIRED PROPERTY success: std::bool;
Expand All @@ -31,12 +22,29 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
SET default := (std::datetime_of_statement());
};
};
CREATE SCALAR TYPE default::MAC EXTENDING std::str {
CREATE CONSTRAINT std::regexp('^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$');
};
CREATE SCALAR TYPE default::CloudProvider EXTENDING enum<Apple, Google>;
CREATE TYPE default::CloudShare {
CREATE REQUIRED PROPERTY provider: default::CloudProvider;
CREATE REQUIRED PROPERTY subject: std::str;
CREATE CONSTRAINT std::exclusive ON ((.provider, .subject));
CREATE REQUIRED PROPERTY share: std::str;
};
CREATE SCALAR TYPE default::Address EXTENDING std::str {
CREATE CONSTRAINT std::regexp('^0x[0-9a-fA-F]{40}$');
};
CREATE GLOBAL default::current_approver_address -> default::Address;
CREATE SCALAR TYPE default::Label EXTENDING std::str {
CREATE CONSTRAINT std::max_len_value(50);
CREATE CONSTRAINT std::min_len_value(1);
};
CREATE TYPE default::Approver {
CREATE PROPERTY bluetoothDevices: array<default::MAC>;
CREATE LINK cloud: default::CloudShare {
CREATE CONSTRAINT std::exclusive;
};
CREATE REQUIRED PROPERTY address: default::Address {
SET readonly := true;
CREATE CONSTRAINT std::exclusive;
Expand Down Expand Up @@ -83,8 +91,6 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE CONSTRAINT std::regexp('^0x[0-9a-fA-F]{64}$');
};
CREATE TYPE default::Account {
CREATE ACCESS POLICY members_select_insert_update
ALLOW SELECT, UPDATE, INSERT USING ((.id IN GLOBAL default::current_accounts));
CREATE REQUIRED PROPERTY address: default::Address {
SET readonly := true;
CREATE CONSTRAINT std::exclusive;
Expand All @@ -93,7 +99,10 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE REQUIRED PROPERTY isActive: std::bool;
CREATE REQUIRED PROPERTY name: default::Label;
CREATE REQUIRED PROPERTY salt: default::Bytes32;
CREATE ACCESS POLICY members_select_insert_update
ALLOW SELECT, UPDATE, INSERT USING ((.id IN GLOBAL default::current_accounts_set));
};
CREATE GLOBAL default::current_accounts := (<default::Account>GLOBAL default::current_accounts_set);
CREATE ABSTRACT TYPE default::ProposalResponse {
CREATE REQUIRED LINK approver: default::Approver {
SET default := (<default::Approver>(GLOBAL default::current_approver).id);
Expand Down Expand Up @@ -123,14 +132,14 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE PROPERTY iconUri: std::str;
CREATE PROPERTY label: default::Label;
CREATE ACCESS POLICY members_only
ALLOW ALL USING ((.account.id IN GLOBAL default::current_accounts));
ALLOW ALL USING ((.account IN GLOBAL default::current_accounts));
};
ALTER TYPE default::ProposalResponse {
CREATE REQUIRED LINK proposal: default::Proposal {
ON TARGET DELETE DELETE SOURCE;
};
CREATE ACCESS POLICY members_can_select
ALLOW SELECT USING ((.proposal.account.id IN GLOBAL default::current_accounts));
ALLOW SELECT USING ((.proposal.account IN GLOBAL default::current_accounts));
};
CREATE SCALAR TYPE default::uint32 EXTENDING std::int64 {
CREATE CONSTRAINT std::max_value(((2 ^ 32) - 1));
Expand All @@ -139,7 +148,7 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE TYPE default::Event {
CREATE REQUIRED LINK account: default::Account;
CREATE ACCESS POLICY members_can_select
ALLOW SELECT USING ((.account.id IN GLOBAL default::current_accounts));
ALLOW SELECT USING ((.account IN GLOBAL default::current_accounts));
CREATE REQUIRED PROPERTY transactionHash: default::Bytes32;
CREATE REQUIRED PROPERTY block: std::bigint {
CREATE CONSTRAINT std::min_value(0n);
Expand All @@ -160,7 +169,7 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE REQUIRED PROPERTY to: default::Address;
CREATE REQUIRED PROPERTY tokenAddress: default::Address;
CREATE ACCESS POLICY members_can_select_insert
ALLOW SELECT, INSERT USING ((.account.id IN GLOBAL default::current_accounts));
ALLOW SELECT, INSERT USING ((.account IN GLOBAL default::current_accounts));
};
CREATE ABSTRACT TYPE default::Transferlike EXTENDING default::Event, default::TransferDetails;
CREATE TYPE default::Transfer EXTENDING default::Transferlike;
Expand Down Expand Up @@ -202,7 +211,6 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
ALTER TYPE default::Proposal {
CREATE MULTI LINK approvals := (.<proposal[IS default::Approval]);
CREATE MULTI LINK rejections := (.<proposal[IS default::Rejection]);
CREATE MULTI LINK responses := (.<proposal[IS default::ProposalResponse]);
};
CREATE TYPE default::Simulation {
CREATE MULTI LINK transfers: default::TransferDetails;
Expand All @@ -228,7 +236,7 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
ALTER TYPE default::Transaction {
CREATE REQUIRED LINK proposal: default::TransactionProposal;
CREATE ACCESS POLICY members_can_select_insert
ALLOW SELECT, INSERT USING ((.proposal.account.id IN GLOBAL default::current_accounts));
ALLOW SELECT, INSERT USING ((.proposal.account IN GLOBAL default::current_accounts));
};
CREATE TYPE default::MessageProposal EXTENDING default::Proposal {
CREATE REQUIRED PROPERTY message: std::str;
Expand All @@ -238,7 +246,7 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE TYPE default::Policy {
CREATE REQUIRED LINK account: default::Account;
CREATE ACCESS POLICY members_select_insert_update
ALLOW SELECT, UPDATE, INSERT USING ((.account.id IN GLOBAL default::current_accounts));
ALLOW SELECT, UPDATE, INSERT USING ((.account IN GLOBAL default::current_accounts));
CREATE REQUIRED PROPERTY name: default::Label;
CREATE CONSTRAINT std::exclusive ON ((.account, .name));
CREATE REQUIRED PROPERTY key: default::uint16;
Expand Down Expand Up @@ -333,17 +341,15 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
CREATE MULTI LINK transfers := (.<account[IS default::Transfer]);
};
ALTER TYPE default::Approver {
CREATE LINK accounts := (WITH
id :=
.id
SELECT
CREATE LINK accounts := (SELECT
default::Account
FILTER
(id IN (.policies.state.approvers.id UNION .policies.draft.approvers.id))
(__source__ IN .approvers)
);
};
CREATE TYPE default::User {
CREATE PROPERTY name: default::Label;
CREATE PROPERTY photoUri: std::str;
};
ALTER TYPE default::Approver {
CREATE REQUIRED LINK user: default::User {
Expand All @@ -359,9 +365,7 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
DISTINCT (.approvers.accounts)
);
};
CREATE GLOBAL default::current_user := (SELECT
(GLOBAL default::current_approver).user
);
CREATE GLOBAL default::current_user := ((GLOBAL default::current_approver).user);
ALTER TYPE default::Event {
CREATE LINK transaction := (WITH
transactionHash :=
Expand Down Expand Up @@ -391,9 +395,38 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
ALTER TYPE default::PolicyState {
CREATE LINK policy := (.<stateHistory[IS default::Policy]);
};
ALTER TYPE default::Proposal {
CREATE LINK policy: default::Policy;
CREATE MULTI LINK potentialApprovers := (WITH
potentialResponses :=
DISTINCT ((((SELECT
.policy
) ?? .account.policies)).state.approvers.id)
,
ids :=
(potentialResponses EXCEPT .approvals.approver.id)
SELECT
default::Approver
FILTER
(.id IN ids)
);
CREATE MULTI LINK potentialRejectors := (WITH
potentialResponses :=
DISTINCT ((((SELECT
.policy
) ?? .account.policies)).state.approvers.id)
,
ids :=
(potentialResponses EXCEPT .rejections.approver.id)
SELECT
default::Approver
FILTER
(.id IN ids)
);
};
ALTER TYPE default::ProposalResponse {
CREATE ACCESS POLICY user_all
ALLOW ALL USING (((.approver.user ?= GLOBAL default::current_user) OR (.approver ?= GLOBAL default::current_approver)));
ALLOW ALL USING ((.approver.user ?= GLOBAL default::current_user));
CREATE CONSTRAINT std::exclusive ON ((.proposal, .approver));
};
CREATE TYPE default::Contact {
Expand Down Expand Up @@ -422,7 +455,6 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
ALTER TYPE default::Approver {
CREATE ACCESS POLICY user_select_update
ALLOW SELECT, UPDATE USING ((.user ?= GLOBAL default::current_user));
CREATE CONSTRAINT std::exclusive ON ((.user, .name));
CREATE CONSTRAINT std::exclusive ON ((.user, .address));
CREATE LINK contact := (std::assert_single((WITH
address :=
Expand Down Expand Up @@ -450,7 +482,6 @@ CREATE MIGRATION m12q2isam5fxdgkmxirhw6jrfiwm6slsadsospn4ljbx3ylyodlkla
FILTER
(.user = GLOBAL default::current_user)
))).risk);
CREATE LINK policy: default::Policy;
};
ALTER TYPE default::TransactionProposal {
CREATE MULTI LINK transactions := (.<proposal[IS default::Transaction]);
Expand Down
Loading

0 comments on commit 74ea3cb

Please sign in to comment.