- Generated SQL queries for actors, films, categories. - Introduced HTTP handlers for actor, film, and category endpoints. - Included utility functions for parsing query parameters and building URLs. - Enabled pagination, filtering, and HAL representation for responses.
219 lines
4.9 KiB
Go
219 lines
4.9 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.29.0
|
|
// source: actor.sql
|
|
|
|
package sqlc
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
)
|
|
|
|
const countActors = `-- name: CountActors :one
|
|
SELECT COUNT(*)
|
|
FROM actor
|
|
`
|
|
|
|
func (q *Queries) CountActors(ctx context.Context) (int64, error) {
|
|
row := q.db.QueryRowContext(ctx, countActors)
|
|
var count int64
|
|
err := row.Scan(&count)
|
|
return count, err
|
|
}
|
|
|
|
const deleteActor = `-- name: DeleteActor :execrows
|
|
DELETE FROM actor WHERE actor_id = ?
|
|
`
|
|
|
|
func (q *Queries) DeleteActor(ctx context.Context, actorID int64) (int64, error) {
|
|
result, err := q.db.ExecContext(ctx, deleteActor, actorID)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.RowsAffected()
|
|
}
|
|
|
|
const getActor = `-- name: GetActor :one
|
|
SELECT actor_id, first_name, last_name, last_update
|
|
FROM actor
|
|
WHERE actor_id = ?
|
|
`
|
|
|
|
func (q *Queries) GetActor(ctx context.Context, actorID int64) (Actor, error) {
|
|
row := q.db.QueryRowContext(ctx, getActor, actorID)
|
|
var i Actor
|
|
err := row.Scan(
|
|
&i.ActorID,
|
|
&i.FirstName,
|
|
&i.LastName,
|
|
&i.LastUpdate,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const insertActor = `-- name: InsertActor :exec
|
|
INSERT INTO actor (actor_id, first_name, last_name, last_update)
|
|
VALUES (?, ?, ?, CURRENT_TIMESTAMP)
|
|
`
|
|
|
|
type InsertActorParams struct {
|
|
ActorID int64 `json:"actor_id"`
|
|
FirstName string `json:"first_name"`
|
|
LastName string `json:"last_name"`
|
|
}
|
|
|
|
func (q *Queries) InsertActor(ctx context.Context, arg InsertActorParams) error {
|
|
_, err := q.db.ExecContext(ctx, insertActor, arg.ActorID, arg.FirstName, arg.LastName)
|
|
return err
|
|
}
|
|
|
|
const listActors = `-- name: ListActors :many
|
|
SELECT actor_id, first_name, last_name, last_update
|
|
FROM actor
|
|
ORDER BY actor_id ASC
|
|
LIMIT ? OFFSET ?
|
|
`
|
|
|
|
type ListActorsParams struct {
|
|
Limit int64 `json:"limit"`
|
|
Offset int64 `json:"offset"`
|
|
}
|
|
|
|
func (q *Queries) ListActors(ctx context.Context, arg ListActorsParams) ([]Actor, error) {
|
|
rows, err := q.db.QueryContext(ctx, listActors, arg.Limit, arg.Offset)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Actor
|
|
for rows.Next() {
|
|
var i Actor
|
|
if err := rows.Scan(
|
|
&i.ActorID,
|
|
&i.FirstName,
|
|
&i.LastName,
|
|
&i.LastUpdate,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const listFilmsByActor = `-- name: ListFilmsByActor :many
|
|
SELECT f.film_id,
|
|
f.title,
|
|
f.description,
|
|
f.release_year,
|
|
f.language_id,
|
|
f.original_language_id,
|
|
f.rental_duration,
|
|
f.rental_rate,
|
|
f.length,
|
|
f.replacement_cost,
|
|
f.rating,
|
|
f.special_features,
|
|
f.last_update
|
|
FROM film f
|
|
JOIN film_actor fa ON fa.film_id = f.film_id
|
|
WHERE fa.actor_id = ?
|
|
ORDER BY f.title ASC
|
|
`
|
|
|
|
func (q *Queries) ListFilmsByActor(ctx context.Context, actorID int64) ([]Film, error) {
|
|
rows, err := q.db.QueryContext(ctx, listFilmsByActor, actorID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Film
|
|
for rows.Next() {
|
|
var i Film
|
|
if err := rows.Scan(
|
|
&i.FilmID,
|
|
&i.Title,
|
|
&i.Description,
|
|
&i.ReleaseYear,
|
|
&i.LanguageID,
|
|
&i.OriginalLanguageID,
|
|
&i.RentalDuration,
|
|
&i.RentalRate,
|
|
&i.Length,
|
|
&i.ReplacementCost,
|
|
&i.Rating,
|
|
&i.SpecialFeatures,
|
|
&i.LastUpdate,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const nextActorID = `-- name: NextActorID :one
|
|
SELECT COALESCE(MAX(actor_id), 0) + 1 FROM actor
|
|
`
|
|
|
|
func (q *Queries) NextActorID(ctx context.Context) (int64, error) {
|
|
row := q.db.QueryRowContext(ctx, nextActorID)
|
|
var column_1 int64
|
|
err := row.Scan(&column_1)
|
|
return column_1, err
|
|
}
|
|
|
|
const patchActor = `-- name: PatchActor :execrows
|
|
UPDATE actor
|
|
SET first_name = COALESCE(?1, first_name),
|
|
last_name = COALESCE(?2, last_name)
|
|
WHERE actor_id = ?3
|
|
`
|
|
|
|
type PatchActorParams struct {
|
|
FirstName sql.NullString `json:"first_name"`
|
|
LastName sql.NullString `json:"last_name"`
|
|
ActorID int64 `json:"actor_id"`
|
|
}
|
|
|
|
func (q *Queries) PatchActor(ctx context.Context, arg PatchActorParams) (int64, error) {
|
|
result, err := q.db.ExecContext(ctx, patchActor, arg.FirstName, arg.LastName, arg.ActorID)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.RowsAffected()
|
|
}
|
|
|
|
const updateActorPut = `-- name: UpdateActorPut :execrows
|
|
UPDATE actor
|
|
SET first_name = ?,
|
|
last_name = ?
|
|
WHERE actor_id = ?
|
|
`
|
|
|
|
type UpdateActorPutParams struct {
|
|
FirstName string `json:"first_name"`
|
|
LastName string `json:"last_name"`
|
|
ActorID int64 `json:"actor_id"`
|
|
}
|
|
|
|
func (q *Queries) UpdateActorPut(ctx context.Context, arg UpdateActorPutParams) (int64, error) {
|
|
result, err := q.db.ExecContext(ctx, updateActorPut, arg.FirstName, arg.LastName, arg.ActorID)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result.RowsAffected()
|
|
}
|