Use sqlc
This commit is contained in:
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
|
||||
}
|
Reference in New Issue
Block a user