--
-- Created by SQL::Translator::Producer::PostgreSQL
-- Created on Fri Nov  8 09:31:51 2024
--
--
-- Table: Bloaty
--
DROP TABLE "Bloaty" CASCADE;
CREATE TABLE "Bloaty" (
  "id" integer NOT NULL,
  "name" character varying NOT NULL,
  "literature" text,
  "your_mom" bytea,
  PRIMARY KEY ("id")
);

--
-- Table: Gnarly
--
DROP TABLE "Gnarly" CASCADE;
CREATE TABLE "Gnarly" (
  "id" integer NOT NULL,
  "name" character varying NOT NULL,
  "literature" text,
  "your_mom" bytea,
  PRIMARY KEY ("id")
);

--
-- Table: HasAccessor
--
DROP TABLE "HasAccessor" CASCADE;
CREATE TABLE "HasAccessor" (
  "id" integer NOT NULL,
  "usable_column" character varying NOT NULL,
  "unusable_column" character varying NOT NULL,
  PRIMARY KEY ("id")
);

--
-- Table: HasDateOps
--
DROP TABLE "HasDateOps" CASCADE;
CREATE TABLE "HasDateOps" (
  "id" integer NOT NULL,
  "a_date" timestamp NOT NULL,
  "b_date" timestamp,
  PRIMARY KEY ("id")
);

--
-- Table: Search
--
DROP TABLE "Search" CASCADE;
CREATE TABLE "Search" (
  "id" integer NOT NULL,
  "name" character varying NOT NULL,
  PRIMARY KEY ("id")
);

--
-- Table: SerializeAll
--
DROP TABLE "SerializeAll" CASCADE;
CREATE TABLE "SerializeAll" (
  "id" integer NOT NULL,
  "text_column" text NOT NULL,
  PRIMARY KEY ("id")
);

--
-- Table: Station
--
DROP TABLE "Station" CASCADE;
CREATE TABLE "Station" (
  "id" integer NOT NULL,
  "name" character varying NOT NULL,
  PRIMARY KEY ("id")
);

--
-- Table: Bar
--
DROP TABLE "Bar" CASCADE;
CREATE TABLE "Bar" (
  "id" bigint NOT NULL,
  "foo_id" integer NOT NULL,
  "test_flag" integer,
  PRIMARY KEY ("id")
);
CREATE INDEX "Bar_idx_foo_id" on "Bar" ("foo_id");

--
-- Table: Foo
--
DROP TABLE "Foo" CASCADE;
CREATE TABLE "Foo" (
  "id" integer NOT NULL,
  "bar_id" integer NOT NULL,
  PRIMARY KEY ("id")
);
CREATE INDEX "Foo_idx_bar_id" on "Foo" ("bar_id");

--
-- Table: Foo_Bar
--
DROP TABLE "Foo_Bar" CASCADE;
CREATE TABLE "Foo_Bar" (
  "foo_id" integer NOT NULL,
  "bar_id" bigint NOT NULL,
  PRIMARY KEY ("foo_id", "bar_id")
);
CREATE INDEX "Foo_Bar_idx_bar_id" on "Foo_Bar" ("bar_id");
CREATE INDEX "Foo_Bar_idx_foo_id" on "Foo_Bar" ("foo_id");

--
-- Table: Gnarly_Station
--
DROP TABLE "Gnarly_Station" CASCADE;
CREATE TABLE "Gnarly_Station" (
  "gnarly_id" integer NOT NULL,
  "station_id" integer NOT NULL,
  PRIMARY KEY ("gnarly_id", "station_id")
);
CREATE INDEX "Gnarly_Station_idx_gnarly_id" on "Gnarly_Station" ("gnarly_id");
CREATE INDEX "Gnarly_Station_idx_station_id" on "Gnarly_Station" ("station_id");

--
-- Foreign Key Definitions
--

ALTER TABLE "Bar" ADD CONSTRAINT "Bar_fk_foo_id" FOREIGN KEY ("foo_id")
  REFERENCES "Foo" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;

ALTER TABLE "Foo_Bar" ADD CONSTRAINT "Foo_Bar_fk_bar_id" FOREIGN KEY ("bar_id")
  REFERENCES "Bar" ("id") DEFERRABLE;

ALTER TABLE "Foo_Bar" ADD CONSTRAINT "Foo_Bar_fk_foo_id" FOREIGN KEY ("foo_id")
  REFERENCES "Foo" ("id") DEFERRABLE;

ALTER TABLE "Gnarly_Station" ADD CONSTRAINT "Gnarly_Station_fk_gnarly_id" FOREIGN KEY ("gnarly_id")
  REFERENCES "Gnarly" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;

ALTER TABLE "Gnarly_Station" ADD CONSTRAINT "Gnarly_Station_fk_station_id" FOREIGN KEY ("station_id")
  REFERENCES "Station" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;