// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.29.0
// source: setup.sql

package postgresql

import (
	"context"
)

const createContentSiteIndex = `-- name: CreateContentSiteIndex :exec
CREATE INDEX IF NOT EXISTS idx_content_site_id ON content(site_id)
`

func (q *Queries) CreateContentSiteIndex(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, createContentSiteIndex)
	return err
}

const createContentUpdatedAtIndex = `-- name: CreateContentUpdatedAtIndex :exec
CREATE INDEX IF NOT EXISTS idx_content_updated_at ON content(updated_at)
`

func (q *Queries) CreateContentUpdatedAtIndex(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, createContentUpdatedAtIndex)
	return err
}

const createUpdateFunction = `-- name: CreateUpdateFunction :exec
CREATE OR REPLACE FUNCTION update_content_timestamp()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = EXTRACT(EPOCH FROM NOW());
    RETURN NEW;
END;
$$ LANGUAGE plpgsql
`

func (q *Queries) CreateUpdateFunction(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, createUpdateFunction)
	return err
}

const createVersionsLookupIndex = `-- name: CreateVersionsLookupIndex :exec
CREATE INDEX IF NOT EXISTS idx_content_versions_lookup ON content_versions(content_id, site_id, created_at DESC)
`

func (q *Queries) CreateVersionsLookupIndex(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, createVersionsLookupIndex)
	return err
}

const initializeSchema = `-- name: InitializeSchema :exec
CREATE TABLE IF NOT EXISTS content (
    id TEXT NOT NULL,
    site_id TEXT NOT NULL,
    value TEXT NOT NULL,
    type TEXT NOT NULL CHECK (type IN ('text', 'markdown', 'link')),
    created_at BIGINT DEFAULT (EXTRACT(EPOCH FROM NOW())) NOT NULL,
    updated_at BIGINT DEFAULT (EXTRACT(EPOCH FROM NOW())) NOT NULL,
    last_edited_by TEXT DEFAULT 'system' NOT NULL,
    PRIMARY KEY (id, site_id)
)
`

func (q *Queries) InitializeSchema(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, initializeSchema)
	return err
}

const initializeVersionsTable = `-- name: InitializeVersionsTable :exec
CREATE TABLE IF NOT EXISTS content_versions (
    version_id SERIAL PRIMARY KEY,
    content_id TEXT NOT NULL,
    site_id TEXT NOT NULL,
    value TEXT NOT NULL,
    type TEXT NOT NULL,
    created_at BIGINT DEFAULT (EXTRACT(EPOCH FROM NOW())) NOT NULL,
    created_by TEXT DEFAULT 'system' NOT NULL
)
`

func (q *Queries) InitializeVersionsTable(ctx context.Context) error {
	_, err := q.db.ExecContext(ctx, initializeVersionsTable)
	return err
}
