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