diff --git a/internal/api/dbmodels/models.go b/internal/api/dbmodels/models.go index 45c1738b..857bbc4f 100644 --- a/internal/api/dbmodels/models.go +++ b/internal/api/dbmodels/models.go @@ -48,3 +48,12 @@ type Tier struct { TIndex sql.NullInt64 `json:"t_index"` Team sql.NullString `json:"team"` } + +type Workshop struct { + Uuid int64 `json:"uuid"` + Title sql.NullString `json:"title"` + Team sql.NullString `json:"team"` + Semester interface{} `json:"semester"` + StartAt sql.NullTime `json:"start_at"` + Link sql.NullString `json:"link"` +} diff --git a/internal/api/dbmodels/workshop.sql.go b/internal/api/dbmodels/workshop.sql.go new file mode 100644 index 00000000..a4ee4b19 --- /dev/null +++ b/internal/api/dbmodels/workshop.sql.go @@ -0,0 +1,57 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.30.0 +// source: workshop.sql + +package dbmodels + +import ( + "context" + "database/sql" +) + +const createWorkshop = `-- name: CreateWorkshop :exec +INSERT INTO +workshop ( + uuid, + title, + team, + semester, + start_at, + link +) +VALUES +(?, ?, ?, ?, ?, ?) +RETURNING uuid, title, team, semester, start_at, link +` + +type CreateWorkshopParams struct { + Uuid int64 `json:"uuid"` + Title sql.NullString `json:"title"` + Team sql.NullString `json:"team"` + Semester interface{} `json:"semester"` + StartAt sql.NullTime `json:"start_at"` + Link sql.NullString `json:"link"` +} + +func (q *Queries) CreateWorkshop(ctx context.Context, arg CreateWorkshopParams) error { + _, err := q.db.ExecContext(ctx, createWorkshop, + arg.Uuid, + arg.Title, + arg.Team, + arg.Semester, + arg.StartAt, + arg.Link, + ) + return err +} + +const deleteWorkshop = `-- name: DeleteWorkshop :exec +DELETE FROM workshop +WHERE uuid = ? +` + +func (q *Queries) DeleteWorkshop(ctx context.Context, uuid int64) error { + _, err := q.db.ExecContext(ctx, deleteWorkshop, uuid) + return err +} diff --git a/sql/migrations/000004_create_workshops.down.sql b/sql/migrations/000004_create_workshops.down.sql new file mode 100644 index 00000000..d487ee9a --- /dev/null +++ b/sql/migrations/000004_create_workshops.down.sql @@ -0,0 +1,3 @@ +-- Language: sqlite + +DROP TABLE IF EXISTS workshop; diff --git a/sql/migrations/000004_create_workshops.up.sql b/sql/migrations/000004_create_workshops.up.sql new file mode 100644 index 00000000..278caa74 --- /dev/null +++ b/sql/migrations/000004_create_workshops.up.sql @@ -0,0 +1,10 @@ +-- Language: sqlite + +CREATE TABLE IF NOT EXISTS workshop ( + uuid INT PRIMARY KEY, + title VARCHAR(100), + team VARCHAR(20), + semester CHAR(3), + start_at DATE, + link TEXT +); diff --git a/sql/queries/workshop.sql b/sql/queries/workshop.sql new file mode 100644 index 00000000..036feb0a --- /dev/null +++ b/sql/queries/workshop.sql @@ -0,0 +1,51 @@ +-- name: CreateWorkshop :exec +INSERT INTO +workshop ( + uuid, + title, + team, + semester, + start_at, + link +) +VALUES +(?, ?, ?, ?, ?, ?) +RETURNING *; + +-- name: GetWorkshop :one +SELECT + title, + team, + semester, + start_at, + link +FROM + workshop +WHERE + uuid = ?; + +-- name: UpdateWorkshop :exec +UPDATE workshop +SET + title = COALESCE(sqlc.narg('title'), title), + team = COALESCE(sqlc.narg('team'), team), + semester = COALESCE(sqlc.narg('semester'), semester), + start_at = COALESCE(sqlc.narg('start_at'), start_at), + link = COALESCE(sqlc.narg('link'), link) +WHERE + uuid = sqlc.arg('uuid'); + +-- name: GetWorkshops :many +SELECT + uuid, + title, + team, + semester, + start_at, + link +FROM + workshop; + +-- name: DeleteWorkshop :exec +DELETE FROM workshop +WHERE uuid = ?;