about summary refs log blame commit diff
path: root/users/tazjin/finito/finito-postgres/migrations/2018-09-26-160621_bootstrap_finito_schema/up.sql
blob: 18ace393b8d9ba3bf805251aafc8783153260a25 (plain) (tree)































                                                          
            



                                                     
-- Creates the initial schema required by finito-postgres.

CREATE TABLE machines (
  id UUID PRIMARY KEY,
  created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  fsm TEXT NOT NULL,
  state JSONB NOT NULL
);

CREATE TABLE events (
  id UUID PRIMARY KEY,
  created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  fsm TEXT NOT NULL,
  fsm_id UUID NOT NULL REFERENCES machines(id),
  event JSONB NOT NULL
);
CREATE INDEX idx_events_machines ON events(fsm_id);

CREATE TYPE ActionStatus AS ENUM (
  'Pending',
  'Completed',
  'Failed'
);

CREATE TABLE actions (
  id UUID PRIMARY KEY,
  created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  fsm TEXT NOT NULL,
  fsm_id UUID NOT NULL REFERENCES machines(id),
  event_id UUID NOT NULL REFERENCES events(id),
  content JSONB NOT NULL,
  status ActionStatus NOT NULL,
  error TEXT
);

CREATE INDEX idx_actions_machines ON actions(fsm_id);
CREATE INDEX idx_actions_events ON actions(event_id);