Use sqlc
This commit is contained in:
parent
30c552cf6c
commit
f20f256313
32
internal/repository/db/db.go
Normal file
32
internal/repository/db/db.go
Normal file
@ -0,0 +1,32 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.26.0
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
)
|
||||
|
||||
type DBTX interface {
|
||||
Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
|
||||
Query(context.Context, string, ...interface{}) (pgx.Rows, error)
|
||||
QueryRow(context.Context, string, ...interface{}) pgx.Row
|
||||
}
|
||||
|
||||
func New(db DBTX) *Queries {
|
||||
return &Queries{db: db}
|
||||
}
|
||||
|
||||
type Queries struct {
|
||||
db DBTX
|
||||
}
|
||||
|
||||
func (q *Queries) WithTx(tx pgx.Tx) *Queries {
|
||||
return &Queries{
|
||||
db: tx,
|
||||
}
|
||||
}
|
63
internal/repository/db/models.go
Normal file
63
internal/repository/db/models.go
Normal file
@ -0,0 +1,63 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.26.0
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
type Reservation struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
Processed int32
|
||||
}
|
||||
|
||||
type Restriction struct {
|
||||
ID int32
|
||||
RestrictionName string
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
type Room struct {
|
||||
ID int32
|
||||
RoomName string
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
type RoomRestriction struct {
|
||||
ID int32
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
ReservationID pgtype.Int4
|
||||
RestrictionID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
type SchemaMigration struct {
|
||||
Version string
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Password string
|
||||
AccessLevel int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
581
internal/repository/db/query.sql.go
Normal file
581
internal/repository/db/query.sql.go
Normal file
@ -0,0 +1,581 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.26.0
|
||||
// source: query.sql
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const allNewReservations = `-- 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
|
||||
`
|
||||
|
||||
type AllNewReservationsRow struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
Processed int32
|
||||
ID_2 pgtype.Int4
|
||||
RoomName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) AllNewReservations(ctx context.Context) ([]AllNewReservationsRow, error) {
|
||||
rows, err := q.db.Query(ctx, allNewReservations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllNewReservationsRow
|
||||
for rows.Next() {
|
||||
var i AllNewReservationsRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Email,
|
||||
&i.Phone,
|
||||
&i.StartDate,
|
||||
&i.EndDate,
|
||||
&i.RoomID,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Processed,
|
||||
&i.ID_2,
|
||||
&i.RoomName,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allReservations = `-- 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
|
||||
`
|
||||
|
||||
type AllReservationsRow struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
Processed int32
|
||||
ID_2 pgtype.Int4
|
||||
RoomName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) AllReservations(ctx context.Context) ([]AllReservationsRow, error) {
|
||||
rows, err := q.db.Query(ctx, allReservations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []AllReservationsRow
|
||||
for rows.Next() {
|
||||
var i AllReservationsRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Email,
|
||||
&i.Phone,
|
||||
&i.StartDate,
|
||||
&i.EndDate,
|
||||
&i.RoomID,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Processed,
|
||||
&i.ID_2,
|
||||
&i.RoomName,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const allRooms = `-- name: AllRooms :many
|
||||
SELECT
|
||||
id,
|
||||
room_name,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
rooms
|
||||
ORDER BY
|
||||
room_name
|
||||
`
|
||||
|
||||
func (q *Queries) AllRooms(ctx context.Context) ([]Room, error) {
|
||||
rows, err := q.db.Query(ctx, allRooms)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []Room
|
||||
for rows.Next() {
|
||||
var i Room
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.RoomName,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const deleteReservation = `-- name: DeleteReservation :exec
|
||||
DELETE FROM reservations
|
||||
WHERE
|
||||
id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteReservation(ctx context.Context, id int32) error {
|
||||
_, err := q.db.Exec(ctx, deleteReservation, id)
|
||||
return err
|
||||
}
|
||||
|
||||
const getReservationByID = `-- 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
|
||||
`
|
||||
|
||||
type GetReservationByIDRow struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
Processed int32
|
||||
ID_2 pgtype.Int4
|
||||
RoomName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) GetReservationByID(ctx context.Context, id int32) (GetReservationByIDRow, error) {
|
||||
row := q.db.QueryRow(ctx, getReservationByID, id)
|
||||
var i GetReservationByIDRow
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Email,
|
||||
&i.Phone,
|
||||
&i.StartDate,
|
||||
&i.EndDate,
|
||||
&i.RoomID,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.Processed,
|
||||
&i.ID_2,
|
||||
&i.RoomName,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getRoomById = `-- name: GetRoomById :one
|
||||
SELECT
|
||||
id,
|
||||
room_name,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
rooms
|
||||
WHERE
|
||||
id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) GetRoomById(ctx context.Context, id int32) (Room, error) {
|
||||
row := q.db.QueryRow(ctx, getRoomById, id)
|
||||
var i Room
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.RoomName,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getUserByID = `-- name: GetUserByID :one
|
||||
SELECT
|
||||
id,
|
||||
first_name,
|
||||
last_name,
|
||||
email,
|
||||
password,
|
||||
access_level,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
users
|
||||
WHERE
|
||||
id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) GetUserByID(ctx context.Context, id int32) (User, error) {
|
||||
row := q.db.QueryRow(ctx, getUserByID, id)
|
||||
var i User
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Email,
|
||||
&i.Password,
|
||||
&i.AccessLevel,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getUserCred = `-- name: GetUserCred :one
|
||||
SELECT
|
||||
id,
|
||||
password
|
||||
FROM
|
||||
users
|
||||
WHERE
|
||||
email = $1
|
||||
`
|
||||
|
||||
type GetUserCredRow struct {
|
||||
ID int32
|
||||
Password string
|
||||
}
|
||||
|
||||
func (q *Queries) GetUserCred(ctx context.Context, email string) (GetUserCredRow, error) {
|
||||
row := q.db.QueryRow(ctx, getUserCred, email)
|
||||
var i GetUserCredRow
|
||||
err := row.Scan(&i.ID, &i.Password)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const insertReservation = `-- 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
|
||||
`
|
||||
|
||||
type InsertReservationParams struct {
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
func (q *Queries) InsertReservation(ctx context.Context, arg InsertReservationParams) (int32, error) {
|
||||
row := q.db.QueryRow(ctx, insertReservation,
|
||||
arg.FirstName,
|
||||
arg.LastName,
|
||||
arg.Email,
|
||||
arg.Phone,
|
||||
arg.StartDate,
|
||||
arg.EndDate,
|
||||
arg.RoomID,
|
||||
arg.CreatedAt,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
var id int32
|
||||
err := row.Scan(&id)
|
||||
return id, err
|
||||
}
|
||||
|
||||
const insertRoomRestriction = `-- 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)
|
||||
`
|
||||
|
||||
type InsertRoomRestrictionParams struct {
|
||||
StartDate pgtype.Date
|
||||
EndDate pgtype.Date
|
||||
RoomID int32
|
||||
ReservationID pgtype.Int4
|
||||
RestrictionID int32
|
||||
CreatedAt pgtype.Timestamp
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
func (q *Queries) InsertRoomRestriction(ctx context.Context, arg InsertRoomRestrictionParams) error {
|
||||
_, err := q.db.Exec(ctx, insertRoomRestriction,
|
||||
arg.StartDate,
|
||||
arg.EndDate,
|
||||
arg.RoomID,
|
||||
arg.ReservationID,
|
||||
arg.RestrictionID,
|
||||
arg.CreatedAt,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
const searchAvailabilityByDatesByRoomID = `-- name: SearchAvailabilityByDatesByRoomID :one
|
||||
SELECT
|
||||
count(id)
|
||||
FROM
|
||||
room_restrictions
|
||||
WHERE
|
||||
room_id = $1
|
||||
AND $2 < end_date
|
||||
AND $3 > start_date
|
||||
`
|
||||
|
||||
type SearchAvailabilityByDatesByRoomIDParams struct {
|
||||
RoomID int32
|
||||
EndDate pgtype.Date
|
||||
StartDate pgtype.Date
|
||||
}
|
||||
|
||||
func (q *Queries) SearchAvailabilityByDatesByRoomID(ctx context.Context, arg SearchAvailabilityByDatesByRoomIDParams) (int64, error) {
|
||||
row := q.db.QueryRow(ctx, searchAvailabilityByDatesByRoomID, arg.RoomID, arg.EndDate, arg.StartDate)
|
||||
var count int64
|
||||
err := row.Scan(&count)
|
||||
return count, err
|
||||
}
|
||||
|
||||
const searchAvailabilityForAllRooms = `-- 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
|
||||
)
|
||||
`
|
||||
|
||||
type SearchAvailabilityForAllRoomsParams struct {
|
||||
EndDate pgtype.Date
|
||||
StartDate pgtype.Date
|
||||
}
|
||||
|
||||
type SearchAvailabilityForAllRoomsRow struct {
|
||||
ID int32
|
||||
RoomName string
|
||||
}
|
||||
|
||||
func (q *Queries) SearchAvailabilityForAllRooms(ctx context.Context, arg SearchAvailabilityForAllRoomsParams) ([]SearchAvailabilityForAllRoomsRow, error) {
|
||||
rows, err := q.db.Query(ctx, searchAvailabilityForAllRooms, arg.EndDate, arg.StartDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []SearchAvailabilityForAllRoomsRow
|
||||
for rows.Next() {
|
||||
var i SearchAvailabilityForAllRoomsRow
|
||||
if err := rows.Scan(&i.ID, &i.RoomName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const updateProcessedForReservation = `-- name: UpdateProcessedForReservation :exec
|
||||
UPDATE reservations
|
||||
SET
|
||||
processed = $1
|
||||
WHERE
|
||||
id = $2
|
||||
`
|
||||
|
||||
type UpdateProcessedForReservationParams struct {
|
||||
Processed int32
|
||||
ID int32
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateProcessedForReservation(ctx context.Context, arg UpdateProcessedForReservationParams) error {
|
||||
_, err := q.db.Exec(ctx, updateProcessedForReservation, arg.Processed, arg.ID)
|
||||
return err
|
||||
}
|
||||
|
||||
const updateReservation = `-- name: UpdateReservation :exec
|
||||
UPDATE reservations
|
||||
SET
|
||||
first_name = $1,
|
||||
last_name = $2,
|
||||
email = $3,
|
||||
phone = $4,
|
||||
updated_at = $5
|
||||
WHERE
|
||||
id = $6
|
||||
`
|
||||
|
||||
type UpdateReservationParams struct {
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
Phone string
|
||||
UpdatedAt pgtype.Timestamp
|
||||
ID int32
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateReservation(ctx context.Context, arg UpdateReservationParams) error {
|
||||
_, err := q.db.Exec(ctx, updateReservation,
|
||||
arg.FirstName,
|
||||
arg.LastName,
|
||||
arg.Email,
|
||||
arg.Phone,
|
||||
arg.UpdatedAt,
|
||||
arg.ID,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
const updateUser = `-- name: UpdateUser :exec
|
||||
UPDATE users
|
||||
SET
|
||||
first_name = $1,
|
||||
last_name = $2,
|
||||
email = $3,
|
||||
access_level = $4,
|
||||
updated_at = $5
|
||||
`
|
||||
|
||||
type UpdateUserParams struct {
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
AccessLevel int32
|
||||
UpdatedAt pgtype.Timestamp
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) error {
|
||||
_, err := q.db.Exec(ctx, updateUser,
|
||||
arg.FirstName,
|
||||
arg.LastName,
|
||||
arg.Email,
|
||||
arg.AccessLevel,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
return err
|
||||
}
|
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;
|
||||
|
Loading…
Reference in New Issue
Block a user