CREATE TABLE public.users (
  identifier bigserial NOT NULL,
  email text NOT NULL,
  username text NOT NULL,
  "role" text NOT NULL,
  "password" bytea NOT NULL,
  CONSTRAINT users_email_key UNIQUE (email),
  CONSTRAINT users_pkey PRIMARY KEY (identifier),
  CONSTRAINT users_username_key UNIQUE (username)
)
WITH (
  OIDS=FALSE
) ;
CREATE TABLE public.books (
  identifier bigserial NOT NULL,
  "contentHash" text NULL,
  "contentType" text NOT NULL,
  title text NULL,
  description text NULL,
  owner bigserial NOT NULL,
  CONSTRAINT books_pkey PRIMARY KEY (identifier),
  CONSTRAINT fk_books_owner FOREIGN KEY (owner) REFERENCES users(identifier)
)
WITH (
  OIDS=FALSE
) ;
CREATE TABLE public.channels (
  identifier bigserial NOT NULL,
  channel text NOT NULL,
  "owner" bigserial NOT NULL,
  CONSTRAINT channels_pkey PRIMARY KEY (identifier),
  CONSTRAINT fk0_owner FOREIGN KEY (owner) REFERENCES users(identifier)
)
WITH (
  OIDS=FALSE
) ;
CREATE TABLE public.tags (
  identifier bigserial NOT NULL,
  tag text NOT NULL,
  "owner" bigserial NOT NULL,
  CONSTRAINT tags_pkey PRIMARY KEY (identifier),
  CONSTRAINT fk0_owner FOREIGN KEY (owner) REFERENCES users(identifier)
)
WITH (
  OIDS=FALSE
) ;
CREATE TABLE public.book_channels (
  channel int8 NOT NULL,
  book int8 NOT NULL,
  CONSTRAINT fk0_channel FOREIGN KEY (channel) REFERENCES channels(identifier),
  CONSTRAINT fk1_book FOREIGN KEY (book) REFERENCES books(identifier)
)
WITH (
  OIDS=FALSE
) ;
CREATE TABLE public.book_tags (
  tag int8 NOT NULL,
  book int8 NOT NULL,
  CONSTRAINT fk0_tag FOREIGN KEY (tag) REFERENCES tags(identifier),
  CONSTRAINT fk1_book FOREIGN KEY (book) REFERENCES books(identifier)
)
WITH (
  OIDS=FALSE
) ;
