Use sqlc
This commit is contained in:
201
sql/query.sql
Normal file
201
sql/query.sql
Normal file
@ -0,0 +1,201 @@
|
||||
-- name: InsertReservation :one
|
||||
INSERT INTO
|
||||
reservations (
|
||||
first_name,
|
||||
last_name,
|
||||
email,
|
||||
phone,
|
||||
start_date,
|
||||
end_date,
|
||||
room_id,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
VALUES
|
||||
($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
||||
RETURNING
|
||||
id;
|
||||
|
||||
-- name: InsertRoomRestriction :exec
|
||||
INSERT INTO
|
||||
room_restrictions (
|
||||
start_date,
|
||||
end_date,
|
||||
room_id,
|
||||
reservation_id,
|
||||
restriction_id,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
VALUES
|
||||
($1, $2, $3, $4, $5, $6, $7);
|
||||
|
||||
-- name: SearchAvailabilityByDatesByRoomID :one
|
||||
SELECT
|
||||
count(id)
|
||||
FROM
|
||||
room_restrictions
|
||||
WHERE
|
||||
room_id = $1
|
||||
AND $2 < end_date
|
||||
AND $3 > start_date;
|
||||
|
||||
-- name: SearchAvailabilityForAllRooms :many
|
||||
SELECT
|
||||
r.id,
|
||||
r.room_name
|
||||
FROM
|
||||
rooms r
|
||||
WHERE
|
||||
r.id NOT IN (
|
||||
SELECT
|
||||
room_id
|
||||
FROM
|
||||
room_restrictions rr
|
||||
WHERE
|
||||
$1 < rr.end_date
|
||||
AND $2 > rr.start_date
|
||||
);
|
||||
|
||||
-- name: GetRoomById :one
|
||||
SELECT
|
||||
id,
|
||||
room_name,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
rooms
|
||||
WHERE
|
||||
id = $1;
|
||||
|
||||
-- name: GetUserByID :one
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
email,
|
||||
password,
|
||||
access_level,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
users
|
||||
WHERE
|
||||
id = $1;
|
||||
|
||||
-- name: UpdateUser :exec
|
||||
UPDATE users
|
||||
SET
|
||||
first_name = $1,
|
||||
last_name = $2,
|
||||
email = $3,
|
||||
access_level = $4,
|
||||
updated_at = $5;
|
||||
|
||||
-- name: GetUserCred :one
|
||||
SELECT
|
||||
id,
|
||||
password
|
||||
FROM
|
||||
users
|
||||
WHERE
|
||||
email = $1;
|
||||
|
||||
-- name: AllReservations :many
|
||||
SELECT
|
||||
r.id,
|
||||
r.first_name,
|
||||
r.last_name,
|
||||
r.email,
|
||||
r.phone,
|
||||
r.start_date,
|
||||
r.end_date,
|
||||
r.room_id,
|
||||
r.created_at,
|
||||
r.updated_at,
|
||||
r.processed,
|
||||
rm.id,
|
||||
rm.room_name
|
||||
FROM
|
||||
reservations r
|
||||
LEFT JOIN rooms rm ON (r.room_id = rm.id)
|
||||
ORDER BY
|
||||
r.start_date ASC;
|
||||
|
||||
-- name: AllNewReservations :many
|
||||
SELECT
|
||||
r.id,
|
||||
r.first_name,
|
||||
r.last_name,
|
||||
r.email,
|
||||
r.phone,
|
||||
r.start_date,
|
||||
r.end_date,
|
||||
r.room_id,
|
||||
r.created_at,
|
||||
r.updated_at,
|
||||
r.processed,
|
||||
rm.id,
|
||||
rm.room_name
|
||||
FROM
|
||||
reservations r
|
||||
LEFT JOIN rooms rm ON (r.room_id = rm.id)
|
||||
WHERE
|
||||
r.processed = 0
|
||||
ORDER BY
|
||||
r.start_date ASC;
|
||||
|
||||
-- name: GetReservationByID :one
|
||||
SELECT
|
||||
r.id,
|
||||
r.first_name,
|
||||
r.last_name,
|
||||
r.email,
|
||||
r.phone,
|
||||
r.start_date,
|
||||
r.end_date,
|
||||
r.room_id,
|
||||
r.created_at,
|
||||
r.updated_at,
|
||||
r.processed,
|
||||
rm.id,
|
||||
rm.room_name
|
||||
FROM
|
||||
reservations r
|
||||
LEFT JOIN rooms rm ON (r.room_id = rm.id)
|
||||
WHERE
|
||||
r.id = $1;
|
||||
|
||||
-- name: UpdateReservation :exec
|
||||
UPDATE reservations
|
||||
SET
|
||||
first_name = $1,
|
||||
last_name = $2,
|
||||
email = $3,
|
||||
phone = $4,
|
||||
updated_at = $5
|
||||
WHERE
|
||||
id = $6;
|
||||
|
||||
-- name: DeleteReservation :exec
|
||||
DELETE FROM reservations
|
||||
WHERE
|
||||
id = $1;
|
||||
|
||||
-- name: UpdateProcessedForReservation :exec
|
||||
UPDATE reservations
|
||||
SET
|
||||
processed = $1
|
||||
WHERE
|
||||
id = $2;
|
||||
|
||||
-- name: AllRooms :many
|
||||
SELECT
|
||||
id,
|
||||
room_name,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
rooms
|
||||
ORDER BY
|
||||
room_name;
|
96
sql/schema.sql
Normal file
96
sql/schema.sql
Normal file
@ -0,0 +1,96 @@
|
||||
-- Adminer 4.8.1 PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1) dump
|
||||
|
||||
CREATE SEQUENCE reservations_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;
|
||||
|
||||
CREATE TABLE "public"."reservations" (
|
||||
"id" integer DEFAULT nextval('reservations_id_seq') NOT NULL,
|
||||
"first_name" character varying(255) DEFAULT '' NOT NULL,
|
||||
"last_name" character varying(255) DEFAULT '' NOT NULL,
|
||||
"email" character varying(255) NOT NULL,
|
||||
"phone" character varying(255) DEFAULT '' NOT NULL,
|
||||
"start_date" date NOT NULL,
|
||||
"end_date" date NOT NULL,
|
||||
"room_id" integer NOT NULL,
|
||||
"created_at" timestamp NOT NULL,
|
||||
"updated_at" timestamp NOT NULL,
|
||||
"processed" integer DEFAULT '0' NOT NULL,
|
||||
CONSTRAINT "reservations_pkey" PRIMARY KEY ("id")
|
||||
) WITH (oids = false);
|
||||
|
||||
CREATE INDEX "reservations_email_idx" ON "public"."reservations" USING btree ("email");
|
||||
|
||||
CREATE INDEX "reservations_last_name_idx" ON "public"."reservations" USING btree ("last_name");
|
||||
|
||||
|
||||
CREATE SEQUENCE restrictions_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;
|
||||
|
||||
CREATE TABLE "public"."restrictions" (
|
||||
"id" integer DEFAULT nextval('restrictions_id_seq') NOT NULL,
|
||||
"restriction_name" character varying(255) NOT NULL,
|
||||
"created_at" timestamp NOT NULL,
|
||||
"updated_at" timestamp NOT NULL,
|
||||
CONSTRAINT "restrictions_pkey" PRIMARY KEY ("id")
|
||||
) WITH (oids = false);
|
||||
|
||||
|
||||
CREATE SEQUENCE room_restrictions_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;
|
||||
|
||||
CREATE TABLE "public"."room_restrictions" (
|
||||
"id" integer DEFAULT nextval('room_restrictions_id_seq') NOT NULL,
|
||||
"start_date" date NOT NULL,
|
||||
"end_date" date NOT NULL,
|
||||
"room_id" integer NOT NULL,
|
||||
"reservation_id" integer,
|
||||
"restriction_id" integer NOT NULL,
|
||||
"created_at" timestamp NOT NULL,
|
||||
"updated_at" timestamp NOT NULL,
|
||||
CONSTRAINT "room_restrictions_pkey" PRIMARY KEY ("id")
|
||||
) WITH (oids = false);
|
||||
|
||||
CREATE INDEX "room_restrictions_reservation_id_idx" ON "public"."room_restrictions" USING btree ("reservation_id");
|
||||
|
||||
CREATE INDEX "room_restrictions_room_id_idx" ON "public"."room_restrictions" USING btree ("room_id");
|
||||
|
||||
CREATE INDEX "room_restrictions_start_date_end_date_idx" ON "public"."room_restrictions" USING btree ("start_date", "end_date");
|
||||
|
||||
|
||||
CREATE SEQUENCE rooms_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;
|
||||
|
||||
CREATE TABLE "public"."rooms" (
|
||||
"id" integer DEFAULT nextval('rooms_id_seq') NOT NULL,
|
||||
"room_name" character varying(255) NOT NULL,
|
||||
"created_at" timestamp NOT NULL,
|
||||
"updated_at" timestamp NOT NULL,
|
||||
CONSTRAINT "rooms_pkey" PRIMARY KEY ("id")
|
||||
) WITH (oids = false);
|
||||
|
||||
|
||||
CREATE TABLE "public"."schema_migration" (
|
||||
"version" character varying(14) NOT NULL,
|
||||
CONSTRAINT "schema_migration_pkey" PRIMARY KEY ("version"),
|
||||
CONSTRAINT "schema_migration_version_idx" UNIQUE ("version")
|
||||
) WITH (oids = false);
|
||||
|
||||
|
||||
CREATE SEQUENCE users_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;
|
||||
|
||||
CREATE TABLE "public"."users" (
|
||||
"id" integer DEFAULT nextval('users_id_seq') NOT NULL,
|
||||
"first_name" character varying(255) DEFAULT '' NOT NULL,
|
||||
"last_name" character varying(255) DEFAULT '' NOT NULL,
|
||||
"email" character varying(255) NOT NULL,
|
||||
"password" character varying(60) NOT NULL,
|
||||
"access_level" integer DEFAULT '1' NOT NULL,
|
||||
"created_at" timestamp NOT NULL,
|
||||
"updated_at" timestamp NOT NULL,
|
||||
CONSTRAINT "users_email_idx" UNIQUE ("email"),
|
||||
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
||||
) WITH (oids = false);
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."reservations" ADD CONSTRAINT "reservations_rooms_id_fk" FOREIGN KEY (room_id) REFERENCES rooms(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE;
|
||||
|
||||
ALTER TABLE ONLY "public"."room_restrictions" ADD CONSTRAINT "room_restrictions_reservations_id_fk" FOREIGN KEY (reservation_id) REFERENCES reservations(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE;
|
||||
ALTER TABLE ONLY "public"."room_restrictions" ADD CONSTRAINT "room_restrictions_restrictions_id_fk" FOREIGN KEY (restriction_id) REFERENCES restrictions(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE;
|
||||
ALTER TABLE ONLY "public"."room_restrictions" ADD CONSTRAINT "room_restrictions_rooms_id_fk" FOREIGN KEY (room_id) REFERENCES rooms(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE;
|
||||
|
Reference in New Issue
Block a user