Add factory creation ports and owner initialization contracts
This commit is contained in:
Vendored
+3
-3
@@ -98,8 +98,8 @@ export async function queryWorkspaceFixture(options: { live?: boolean } = {}) {
|
||||
);
|
||||
const implementation = (atom: string) => `conform ${atom} as TaskFacts id "${atom}-facts" {
|
||||
private state Title${atom} id "${atom}:title" on ${atom} : string policy crdt(string) default "Untitled";
|
||||
private state Done${atom} id "${atom}:done" on ${atom} : bool policy optimistic-register default false;
|
||||
private state Rank${atom} id "${atom}:rank" on ${atom} : int64 policy optimistic-register default 0;
|
||||
private state Done${atom} id "${atom}:done" on ${atom} : bool policy register default false;
|
||||
private state Rank${atom} id "${atom}:rank" on ${atom} : int64 policy register default 0;
|
||||
private edge Assignee${atom} id "${atom}:assignee" {
|
||||
atom ${atom} projection assignee id "${atom}:assignee:forward" optional-one;
|
||||
interface PersonFacts projection tasks id "${atom}:assignee:inverse" many;
|
||||
@@ -114,7 +114,7 @@ export async function queryWorkspaceFixture(options: { live?: boolean } = {}) {
|
||||
import interface PersonFacts; import interface TaskFacts; import interface Collection; import package Queries;
|
||||
atom Task id "Task"; atom Reminder id "Reminder"; atom Person id "Person"; atom Tasks id "Tasks";
|
||||
conform Person as PersonFacts id "person-facts" {
|
||||
private state Name id "person:name" on Person : string policy optimistic-register default "Nobody";
|
||||
private state Name id "person:name" on Person : string policy register default "Nobody";
|
||||
bind name to state Name;
|
||||
}
|
||||
${implementation("Task")} ${implementation("Reminder")}
|
||||
|
||||
Vendored
+2
-2
@@ -8,7 +8,7 @@ workspace Todo id "workspace:todo" revision "workspace:todo@1" commit "111111111
|
||||
import package TodoRuntime;
|
||||
|
||||
shared state ProjectTitle id "slot:project:title" on Project : string
|
||||
policy optimistic-register default "Untitled project";
|
||||
policy register default "Untitled project";
|
||||
|
||||
conform Project as Named {
|
||||
bind name.get to state ProjectTitle.read;
|
||||
@@ -19,7 +19,7 @@ workspace Todo id "workspace:todo" revision "workspace:todo@1" commit "111111111
|
||||
|
||||
conform Person as Named {
|
||||
private state PersonName id "slot:person:name" on Person : string
|
||||
policy optimistic-register default "Anonymous";
|
||||
policy register default "Anonymous";
|
||||
bind name.get to state PersonName.read;
|
||||
bind name.set to state PersonName.write;
|
||||
bind name.watch-start to state PersonName.watch-start;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ workspace WebStudioFixture id "workspace:web-studio-fixture" revision "workspace
|
||||
import package ComponentRuntime;
|
||||
|
||||
shared state ProjectName id "slot:project:name" on Project : string
|
||||
policy optimistic-register default "Untitled project";
|
||||
policy register default "Untitled project";
|
||||
shared edge ProjectComponentEdge id "edge:project:component" {
|
||||
atom ProjectComponent projection subject id "projection:component:subject" exactly-one;
|
||||
atom Project projection component id "projection:project:component" optional-one;
|
||||
|
||||
Reference in New Issue
Block a user