database

package
v0.8.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Code generated by gen-db-wrappers. DO NOT EDIT.

Code generated by gen-db-wrappers. DO NOT EDIT.

Code generated by gen-db-wrappers. DO NOT EDIT.

Code generated by gen-db-wrappers. DO NOT EDIT.

Code generated by gen-db-wrappers. DO NOT EDIT.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotFound is returned when a query returns no rows.
	ErrNotFound = errors.New("not found")

	// ErrUnsupportedDriver is returned when the database driver is not recognized.
	ErrUnsupportedDriver = errors.New("unsupported database driver")

	// ErrInvalidPostgresUnixURL is returned when a postgres+unix URL is invalid.
	ErrInvalidPostgresUnixURL = errors.New("invalid postgres+unix URL")

	// ErrInvalidMySQLUnixURL is returned when a mysql+unix URL is invalid.
	ErrInvalidMySQLUnixURL = errors.New("invalid mysql+unix URL")
)

Functions

func IsDuplicateKeyError added in v0.6.0

func IsDuplicateKeyError(err error) bool

IsDuplicateKeyError checks if the error is a unique constraint violation Works across SQLite, PostgreSQL, and MySQL.

func IsNotFoundError added in v0.6.0

func IsNotFoundError(err error) bool

IsNotFoundError checks if the error indicates a row was not found.

Types

type AddNarInfoReferenceParams added in v0.8.0

type AddNarInfoReferenceParams struct {
	NarInfoID int64
	Reference string
}

type AddNarInfoReferencesParams added in v0.8.0

type AddNarInfoReferencesParams struct {
	NarInfoID int64
	Reference []string
}

type AddNarInfoSignatureParams added in v0.8.0

type AddNarInfoSignatureParams struct {
	NarInfoID int64
	Signature string
}

type AddNarInfoSignaturesParams added in v0.8.0

type AddNarInfoSignaturesParams struct {
	NarInfoID int64
	Signature []string
}

type Config added in v0.6.0

type Config struct {
	ID        int64
	Key       string
	Value     string
	CreatedAt time.Time
	UpdatedAt sql.NullTime
}

type CreateConfigParams added in v0.6.0

type CreateConfigParams struct {
	Key   string
	Value string
}

type CreateNarFileParams added in v0.6.0

type CreateNarFileParams struct {
	Hash        string
	Compression string
	Query       string
	FileSize    uint64
}

type CreateNarInfoParams added in v0.8.0

type CreateNarInfoParams struct {
	Hash        string
	StorePath   sql.NullString
	URL         sql.NullString
	Compression sql.NullString
	FileHash    sql.NullString
	FileSize    sql.NullInt64
	NarHash     sql.NullString
	NarSize     sql.NullInt64
	Deriver     sql.NullString
	System      sql.NullString
	Ca          sql.NullString
}

type GetMigratedNarInfoHashesPaginatedParams added in v0.8.0

type GetMigratedNarInfoHashesPaginatedParams struct {
	Limit  int32
	Offset int32
}

type LinkNarInfoToNarFileParams added in v0.6.0

type LinkNarInfoToNarFileParams struct {
	NarInfoID int64
	NarFileID int64
}

type NarFile added in v0.6.0

type NarFile struct {
	ID             int64
	Hash           string
	Compression    string
	FileSize       uint64
	Query          string
	CreatedAt      time.Time
	UpdatedAt      sql.NullTime
	LastAccessedAt sql.NullTime
}

type NarInfo added in v0.0.13

type NarInfo struct {
	ID             int64
	Hash           string
	CreatedAt      time.Time
	UpdatedAt      sql.NullTime
	LastAccessedAt sql.NullTime
	StorePath      sql.NullString
	URL            sql.NullString
	Compression    sql.NullString
	FileHash       sql.NullString
	FileSize       sql.NullInt64
	NarHash        sql.NullString
	NarSize        sql.NullInt64
	Deriver        sql.NullString
	System         sql.NullString
	Ca             sql.NullString
}

type PoolConfig added in v0.6.0

type PoolConfig struct {
	// MaxOpenConns is the maximum number of open connections to the database.
	// If <= 0, defaults are used based on database type.
	MaxOpenConns int
	// MaxIdleConns is the maximum number of connections in the idle connection pool.
	// If <= 0, defaults are used based on database type.
	MaxIdleConns int
}

PoolConfig holds database connection pool settings.

type Querier added in v0.6.0

type Querier interface {
	//AddNarInfoReference
	//
	//  INSERT INTO narinfo_references (
	//      narinfo_id, reference
	//  ) VALUES (
	//      $1, $2
	//  )
	AddNarInfoReference(ctx context.Context, arg AddNarInfoReferenceParams) error
	// @bulk-for AddNarInfoReference
	//
	//  INSERT INTO narinfo_references (
	//      narinfo_id, reference
	//  )
	//  SELECT $1, unnest($2::text[]) ON CONFLICT (narinfo_id, reference) DO NOTHING
	AddNarInfoReferences(ctx context.Context, arg AddNarInfoReferencesParams) error
	//AddNarInfoSignature
	//
	//  INSERT INTO narinfo_signatures (
	//      narinfo_id, signature
	//  ) VALUES (
	//      $1, $2
	//  )
	AddNarInfoSignature(ctx context.Context, arg AddNarInfoSignatureParams) error
	// @bulk-for AddNarInfoSignature
	//
	//  INSERT INTO narinfo_signatures (
	//      narinfo_id, signature
	//  )
	//  SELECT $1, unnest($2::text[]) ON CONFLICT (narinfo_id, signature) DO NOTHING
	AddNarInfoSignatures(ctx context.Context, arg AddNarInfoSignaturesParams) error
	//CreateConfig
	//
	//  INSERT INTO config (
	//      key, value
	//  ) VALUES (
	//      $1, $2
	//  )
	//  RETURNING id, key, value, created_at, updated_at
	CreateConfig(ctx context.Context, arg CreateConfigParams) (Config, error)
	//CreateNarFile
	//
	//  INSERT INTO nar_files (
	//      hash, compression, query, file_size
	//  ) VALUES (
	//      $1, $2, $3, $4
	//  )
	//  ON CONFLICT (hash) DO UPDATE SET
	//      updated_at = EXCLUDED.updated_at
	//  RETURNING id, hash, compression, file_size, query, created_at, updated_at, last_accessed_at
	CreateNarFile(ctx context.Context, arg CreateNarFileParams) (NarFile, error)
	//CreateNarInfo
	//
	//  INSERT INTO narinfos (
	//      hash, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
	//  ) VALUES (
	//      $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11
	//  )
	//  ON CONFLICT (hash) DO UPDATE SET
	//      store_path = EXCLUDED.store_path,
	//      url = EXCLUDED.url,
	//      compression = EXCLUDED.compression,
	//      file_hash = EXCLUDED.file_hash,
	//      file_size = EXCLUDED.file_size,
	//      nar_hash = EXCLUDED.nar_hash,
	//      nar_size = EXCLUDED.nar_size,
	//      deriver = EXCLUDED.deriver,
	//      system = EXCLUDED.system,
	//      ca = EXCLUDED.ca,
	//      updated_at = CURRENT_TIMESTAMP
	//  WHERE narinfos.url IS NULL
	//  RETURNING id, hash, created_at, updated_at, last_accessed_at, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
	CreateNarInfo(ctx context.Context, arg CreateNarInfoParams) (NarInfo, error)
	//DeleteNarFileByHash
	//
	//  DELETE FROM nar_files
	//  WHERE hash = $1
	DeleteNarFileByHash(ctx context.Context, hash string) (int64, error)
	//DeleteNarFileByID
	//
	//  DELETE FROM nar_files
	//  WHERE id = $1
	DeleteNarFileByID(ctx context.Context, id int64) (int64, error)
	//DeleteNarInfoByHash
	//
	//  DELETE FROM narinfos
	//  WHERE hash = $1
	DeleteNarInfoByHash(ctx context.Context, hash string) (int64, error)
	//DeleteNarInfoByID
	//
	//  DELETE FROM narinfos
	//  WHERE id = $1
	DeleteNarInfoByID(ctx context.Context, id int64) (int64, error)
	//DeleteOrphanedNarFiles
	//
	//  DELETE FROM nar_files
	//  WHERE id NOT IN (
	//      SELECT DISTINCT nar_file_id
	//      FROM narinfo_nar_files
	//  )
	DeleteOrphanedNarFiles(ctx context.Context) (int64, error)
	//DeleteOrphanedNarInfos
	//
	//  DELETE FROM narinfos
	//  WHERE id NOT IN (
	//      SELECT DISTINCT narinfo_id
	//      FROM narinfo_nar_files
	//  )
	DeleteOrphanedNarInfos(ctx context.Context) (int64, error)
	//GetConfigByID
	//
	//  SELECT id, key, value, created_at, updated_at
	//  FROM config
	//  WHERE id = $1
	GetConfigByID(ctx context.Context, id int64) (Config, error)
	//GetConfigByKey
	//
	//  SELECT id, key, value, created_at, updated_at
	//  FROM config
	//  WHERE key = $1
	GetConfigByKey(ctx context.Context, key string) (Config, error)
	// NOTE: This query uses a correlated subquery which is not optimal for performance.
	// The ideal implementation would use a window function (SUM OVER), but sqlc v1.30.0
	// does not properly support filtering on window function results in subqueries.
	//
	//  SELECT n1.id, n1.hash, n1.compression, n1.file_size, n1.query, n1.created_at, n1.updated_at, n1.last_accessed_at
	//  FROM nar_files n1
	//  WHERE (
	//      SELECT SUM(n2.file_size)
	//      FROM nar_files n2
	//      WHERE n2.last_accessed_at < n1.last_accessed_at
	//         OR (n2.last_accessed_at = n1.last_accessed_at AND n2.id <= n1.id)
	//  ) <= $1
	GetLeastUsedNarFiles(ctx context.Context, fileSize uint64) ([]NarFile, error)
	// NOTE: This query uses a correlated subquery which is not optimal for performance.
	// The ideal implementation would use a window function (SUM OVER), but sqlc v1.30.0
	// does not properly support filtering on window function results in subqueries.
	// Gets the least-used narinfos up to a certain total file size (accounting for their nar_files).
	//
	//  SELECT ni1.id, ni1.hash, ni1.created_at, ni1.updated_at, ni1.last_accessed_at, ni1.store_path, ni1.url, ni1.compression, ni1.file_hash, ni1.file_size, ni1.nar_hash, ni1.nar_size, ni1.deriver, ni1.system, ni1.ca
	//  FROM narinfos ni1
	//  WHERE (
	//      SELECT COALESCE(SUM(nf.file_size), 0)
	//      FROM nar_files nf
	//      WHERE nf.id IN (
	//          SELECT DISTINCT nnf.nar_file_id
	//          FROM narinfo_nar_files nnf
	//          INNER JOIN narinfos ni2 ON nnf.narinfo_id = ni2.id
	//          WHERE ni2.last_accessed_at < ni1.last_accessed_at
	//              OR (ni2.last_accessed_at = ni1.last_accessed_at AND ni2.id <= ni1.id)
	//      )
	//  ) <= $1
	GetLeastUsedNarInfos(ctx context.Context, fileSize uint64) ([]NarInfo, error)
	// Get all narinfo hashes that have a URL (migrated).
	//
	//  SELECT hash
	//  FROM narinfos
	//  WHERE url IS NOT NULL
	GetMigratedNarInfoHashes(ctx context.Context) ([]string, error)
	// Get migrated narinfo hashes with pagination support.
	//
	//  SELECT hash
	//  FROM narinfos
	//  WHERE url IS NOT NULL
	//  ORDER BY hash
	//  LIMIT $1 OFFSET $2
	GetMigratedNarInfoHashesPaginated(ctx context.Context, arg GetMigratedNarInfoHashesPaginatedParams) ([]string, error)
	//GetNarFileByHash
	//
	//  SELECT id, hash, compression, file_size, query, created_at, updated_at, last_accessed_at
	//  FROM nar_files
	//  WHERE hash = $1
	GetNarFileByHash(ctx context.Context, hash string) (NarFile, error)
	//GetNarFileByID
	//
	//  SELECT id, hash, compression, file_size, query, created_at, updated_at, last_accessed_at
	//  FROM nar_files
	//  WHERE id = $1
	GetNarFileByID(ctx context.Context, id int64) (NarFile, error)
	//GetNarFileByNarInfoID
	//
	//  SELECT nf.id, nf.hash, nf.compression, nf.file_size, nf.query, nf.created_at, nf.updated_at, nf.last_accessed_at
	//  FROM nar_files nf
	//  INNER JOIN narinfo_nar_files nnf ON nf.id = nnf.nar_file_id
	//  WHERE nnf.narinfo_id = $1
	GetNarFileByNarInfoID(ctx context.Context, narinfoID int64) (NarFile, error)
	//GetNarFileCount
	//
	//  SELECT CAST(COUNT(*) AS BIGINT) AS count
	//  FROM nar_files
	GetNarFileCount(ctx context.Context) (int64, error)
	//GetNarInfoByHash
	//
	//  SELECT id, hash, created_at, updated_at, last_accessed_at, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
	//  FROM narinfos
	//  WHERE hash = $1
	GetNarInfoByHash(ctx context.Context, hash string) (NarInfo, error)
	//GetNarInfoByID
	//
	//  SELECT id, hash, created_at, updated_at, last_accessed_at, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
	//  FROM narinfos
	//  WHERE id = $1
	GetNarInfoByID(ctx context.Context, id int64) (NarInfo, error)
	//GetNarInfoCount
	//
	//  SELECT CAST(COUNT(*) AS BIGINT) AS count
	//  FROM narinfos
	GetNarInfoCount(ctx context.Context) (int64, error)
	//GetNarInfoHashesByNarFileID
	//
	//  SELECT ni.hash
	//  FROM narinfos ni
	//  INNER JOIN narinfo_nar_files nnf ON ni.id = nnf.narinfo_id
	//  WHERE nnf.nar_file_id = $1
	GetNarInfoHashesByNarFileID(ctx context.Context, narFileID int64) ([]string, error)
	//GetNarInfoReferences
	//
	//  SELECT reference
	//  FROM narinfo_references
	//  WHERE narinfo_id = $1
	GetNarInfoReferences(ctx context.Context, narinfoID int64) ([]string, error)
	//GetNarInfoSignatures
	//
	//  SELECT signature
	//  FROM narinfo_signatures
	//  WHERE narinfo_id = $1
	GetNarInfoSignatures(ctx context.Context, narinfoID int64) ([]string, error)
	//GetNarTotalSize
	//
	//  SELECT CAST(COALESCE(SUM(file_size), 0) AS BIGINT) AS total_size
	//  FROM nar_files
	GetNarTotalSize(ctx context.Context) (int64, error)
	// Find files that have no relationship to any narinfo
	//
	//  SELECT nf.id, nf.hash, nf.compression, nf.file_size, nf.query, nf.created_at, nf.updated_at, nf.last_accessed_at
	//  FROM nar_files nf
	//  LEFT JOIN narinfo_nar_files ninf ON nf.id = ninf.nar_file_id
	//  WHERE ninf.narinfo_id IS NULL
	GetOrphanedNarFiles(ctx context.Context) ([]NarFile, error)
	// Get all narinfo hashes that have no URL (unmigrated).
	//
	//  SELECT hash
	//  FROM narinfos
	//  WHERE url IS NULL
	GetUnmigratedNarInfoHashes(ctx context.Context) ([]string, error)
	// Check if a narinfo hash has been migrated (has a URL).
	//
	//  SELECT EXISTS(
	//      SELECT 1
	//      FROM narinfos
	//      WHERE hash = $1 AND url IS NOT NULL
	//  ) AS is_migrated
	IsNarInfoMigrated(ctx context.Context, hash string) (bool, error)
	//LinkNarInfoToNarFile
	//
	//  INSERT INTO narinfo_nar_files (
	//      narinfo_id, nar_file_id
	//  ) VALUES (
	//      $1, $2
	//  )
	//  ON CONFLICT (narinfo_id, nar_file_id) DO NOTHING
	LinkNarInfoToNarFile(ctx context.Context, arg LinkNarInfoToNarFileParams) error
	//SetConfig
	//
	//  INSERT INTO config (
	//      key, value
	//  ) VALUES (
	//      $1, $2
	//  )
	//  ON CONFLICT(key)
	//  DO UPDATE SET
	//    value = EXCLUDED.value,
	//    updated_at = CURRENT_TIMESTAMP
	SetConfig(ctx context.Context, arg SetConfigParams) error
	//TouchNarFile
	//
	//  UPDATE nar_files
	//  SET
	//      last_accessed_at = CURRENT_TIMESTAMP,
	//      updated_at = CURRENT_TIMESTAMP
	//  WHERE hash = $1
	TouchNarFile(ctx context.Context, hash string) (int64, error)
	//TouchNarInfo
	//
	//  UPDATE narinfos
	//  SET
	//      last_accessed_at = CURRENT_TIMESTAMP,
	//      updated_at = CURRENT_TIMESTAMP
	//  WHERE hash = $1
	TouchNarInfo(ctx context.Context, hash string) (int64, error)

	WithTx(tx *sql.Tx) Querier
	DB() *sql.DB
}

func Open

func Open(dbURL string, poolCfg *PoolConfig) (Querier, error)

Open opens a database connection and returns a Querier implementation. The database type is determined from the URL scheme:

  • sqlite:// or sqlite3:// for SQLite
  • postgres:// or postgresql:// for PostgreSQL
  • mysql:// for MySQL/MariaDB

The poolCfg parameter is optional. If nil, sensible defaults are used based on the database type. SQLite uses MaxOpenConns=1, PostgreSQL and MySQL use higher values.

type SetConfigParams added in v0.6.0

type SetConfigParams struct {
	Key   string
	Value string
}

type Type added in v0.6.0

type Type uint8
const (
	TypeUnknown Type = iota
	TypeMySQL
	TypePostgreSQL
	TypeSQLite
)

func DetectFromDatabaseURL added in v0.6.0

func DetectFromDatabaseURL(dbURL string) (Type, error)

DetectFromDatabaseURL detects the database type given a database url.

func (Type) String added in v0.6.0

func (t Type) String() string

String returns the string representation of a Type.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL