dev: automated commit - 2025-08-10 18:18:05

This commit is contained in:
Mariano Z. 2025-08-10 18:18:05 -03:00
parent 47fb2fb928
commit 81967b4d8e
13 changed files with 438 additions and 53 deletions

View file

@ -4,9 +4,19 @@
package db
import (
"database/sql"
)
type Config struct {
ApiToken string `json:"api_token"`
ZoneID string `json:"zone_id"`
Domain string `json:"domain"`
UpdatePeriod string `json:"update_period"`
}
type StaticRecord struct {
RecordID string `json:"record_id"`
RecordName string `json:"record_name"`
CreatedAt sql.NullTime `json:"created_at"`
}

View file

@ -1,3 +1,4 @@
-- db/queries.sql
-- name: GetConfig :one
SELECT * FROM config LIMIT 1;
@ -25,7 +26,26 @@ CREATE TABLE IF NOT EXISTS config (
update_period TEXT NOT NULL DEFAULT '0 */6 * * *'
);
CREATE TABLE IF NOT EXISTS static_records (
record_id TEXT PRIMARY KEY,
record_name TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Insert default config if none exists
INSERT OR IGNORE INTO config (api_token, zone_id, domain, update_period)
SELECT '', '', 'mz.uy', '0 */6 * * *'
WHERE NOT EXISTS (SELECT 1 FROM config);
-- name: AddStaticRecord :exec
INSERT OR REPLACE INTO static_records (record_id, record_name)
VALUES (?, ?);
-- name: RemoveStaticRecord :exec
DELETE FROM static_records WHERE record_id = ?;
-- name: GetStaticRecords :many
SELECT record_id, record_name FROM static_records;
-- name: IsStaticRecord :one
SELECT CAST(EXISTS(SELECT 1 FROM static_records WHERE record_id = ?) AS BOOLEAN) AS is_static;

View file

@ -9,6 +9,21 @@ import (
"context"
)
const addStaticRecord = `-- name: AddStaticRecord :exec
INSERT OR REPLACE INTO static_records (record_id, record_name)
VALUES (?, ?)
`
type AddStaticRecordParams struct {
RecordID string `json:"record_id"`
RecordName string `json:"record_name"`
}
func (q *Queries) AddStaticRecord(ctx context.Context, arg AddStaticRecordParams) error {
_, err := q.db.ExecContext(ctx, addStaticRecord, arg.RecordID, arg.RecordName)
return err
}
const deleteAllConfig = `-- name: DeleteAllConfig :exec
DELETE FROM config
`
@ -22,6 +37,7 @@ const getConfig = `-- name: GetConfig :one
SELECT api_token, zone_id, domain, update_period FROM config LIMIT 1
`
// db/queries.sql
func (q *Queries) GetConfig(ctx context.Context) (Config, error) {
row := q.db.QueryRowContext(ctx, getConfig)
var i Config
@ -34,6 +50,38 @@ func (q *Queries) GetConfig(ctx context.Context) (Config, error) {
return i, err
}
const getStaticRecords = `-- name: GetStaticRecords :many
SELECT record_id, record_name FROM static_records
`
type GetStaticRecordsRow struct {
RecordID string `json:"record_id"`
RecordName string `json:"record_name"`
}
func (q *Queries) GetStaticRecords(ctx context.Context) ([]GetStaticRecordsRow, error) {
rows, err := q.db.QueryContext(ctx, getStaticRecords)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetStaticRecordsRow
for rows.Next() {
var i GetStaticRecordsRow
if err := rows.Scan(&i.RecordID, &i.RecordName); 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 initSchema = `-- name: InitSchema :exec
CREATE TABLE IF NOT EXISTS config (
api_token TEXT NOT NULL DEFAULT '',
@ -70,6 +118,26 @@ func (q *Queries) InsertConfig(ctx context.Context, arg InsertConfigParams) erro
return err
}
const isStaticRecord = `-- name: IsStaticRecord :one
SELECT CAST(EXISTS(SELECT 1 FROM static_records WHERE record_id = ?) AS BOOLEAN) AS is_static
`
func (q *Queries) IsStaticRecord(ctx context.Context, recordID string) (bool, error) {
row := q.db.QueryRowContext(ctx, isStaticRecord, recordID)
var is_static bool
err := row.Scan(&is_static)
return is_static, err
}
const removeStaticRecord = `-- name: RemoveStaticRecord :exec
DELETE FROM static_records WHERE record_id = ?
`
func (q *Queries) RemoveStaticRecord(ctx context.Context, recordID string) error {
_, err := q.db.ExecContext(ctx, removeStaticRecord, recordID)
return err
}
const upsertConfig = `-- name: UpsertConfig :exec
INSERT INTO config (api_token, zone_id, domain, update_period)
VALUES (?, ?, ?, ?)

View file

@ -4,3 +4,10 @@ CREATE TABLE IF NOT EXISTS config (
domain TEXT NOT NULL DEFAULT 'mz.uy',
update_period TEXT NOT NULL DEFAULT '0 */6 * * *'
);
-- Tabla para marcar records como estáticos
CREATE TABLE IF NOT EXISTS static_records (
record_id TEXT PRIMARY KEY,
record_name TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);