CREATE TABLE accounts (
	id       serial PRIMARY KEY,
	name     varchar(100)  NOT NULL UNIQUE,
	pwhash   varchar(100)  NOT NULL,
	god      boolean       NOT NULL DEFAULT FALSE
);

CREATE TABLE sessions (
  id varchar(100) PRIMARY KEY,
  account integer references accounts ON DELETE CASCADE
);

CREATE TYPE perm AS ENUM ('owner', 'world');

-- owner = 1, world = 2
CREATE TABLE permissions (
  id    serial  PRIMARY KEY,
  read  perm    NOT NULL DEFAULT 'world',
  write perm    NOT NULL DEFAULT 'owner',
  carry perm    NOT NULL DEFAULT 'world',
  exec  perm    NOT NULL DEFAULT 'world'
);

CREATE TABLE objects (
  id        serial  PRIMARY KEY,
  avatar    boolean NOT NULL DEFAULT FALSE,
  bedroom   boolean NOT NULL DEFAULT FALSE,
  data      jsonb   NOT NULL,

  perms   integer references permissions,
  owner   integer references accounts
);


CREATE TABLE contains (
  container integer references objects ON DELETE RESTRICT,
  contained integer references objects ON DELETE CASCADE
);
