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 ¶
- Variables
- func IsDeadlockError(err error) bool
- func IsDuplicateKeyError(err error) bool
- func IsNotFoundError(err error) bool
- type AddNarInfoReferenceParams
- type AddNarInfoReferencesParams
- type AddNarInfoSignatureParams
- type AddNarInfoSignaturesParams
- type Config
- type CreateConfigParams
- type CreateNarFileParams
- type CreateNarInfoParams
- type DeleteNarFileByHashParams
- type GetMigratedNarInfoHashesPaginatedParams
- type GetNarFileByHashAndCompressionAndQueryParams
- type GetNarInfoURLByNarFileHashParams
- type LinkNarInfoToNarFileParams
- type NarFile
- type NarInfo
- type PoolConfig
- type Querier
- type SetConfigParams
- type TouchNarFileParams
- type Type
Constants ¶
This section is empty.
Variables ¶
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 IsDeadlockError ¶ added in v0.8.0
IsDeadlockError checks if the error is a deadlock or a "database busy" error. Works across SQLite, PostgreSQL, and MySQL.
func IsDuplicateKeyError ¶ added in v0.6.0
func IsNotFoundError ¶ added in v0.6.0
IsNotFoundError checks if the error indicates a row was not found.
Types ¶
type AddNarInfoReferenceParams ¶ added in v0.8.0
type AddNarInfoReferencesParams ¶ added in v0.8.0
type AddNarInfoSignatureParams ¶ added in v0.8.0
type AddNarInfoSignaturesParams ¶ added in v0.8.0
type CreateConfigParams ¶ added in v0.6.0
type CreateNarFileParams ¶ added in v0.6.0
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 DeleteNarFileByHashParams ¶ added in v0.8.0
type GetMigratedNarInfoHashesPaginatedParams ¶ added in v0.8.0
type GetNarFileByHashAndCompressionAndQueryParams ¶ added in v0.8.0
type GetNarInfoURLByNarFileHashParams ¶ added in v0.8.5
type LinkNarInfoToNarFileParams ¶ added in v0.6.0
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, compression, query) 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 AND compression = $2 AND query = $3
DeleteNarFileByHash(ctx context.Context, arg DeleteNarFileByHashParams) (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)
//GetNarFileByHashAndCompressionAndQuery
//
// SELECT id, hash, compression, file_size, query, created_at, updated_at, last_accessed_at
// FROM nar_files
// WHERE hash = $1 AND compression = $2 AND query = $3
GetNarFileByHashAndCompressionAndQuery(ctx context.Context, arg GetNarFileByHashAndCompressionAndQueryParams) (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)
//GetNarInfoURLByNarFileHash
//
// SELECT ni.url
// FROM narinfos ni
// INNER JOIN narinfo_nar_files nnf ON ni.id = nnf.narinfo_id
// INNER JOIN nar_files nf ON nf.id = nnf.nar_file_id
// WHERE nf.hash = $1 AND nf.compression = $2 AND nf.query = $3
// LIMIT 1
GetNarInfoURLByNarFileHash(ctx context.Context, arg GetNarInfoURLByNarFileHashParams) (sql.NullString, 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 AND compression = $2 AND query = $3
TouchNarFile(ctx context.Context, arg TouchNarFileParams) (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 TouchNarFileParams ¶ added in v0.8.0
type Type ¶ added in v0.6.0
type Type uint8
func DetectFromDatabaseURL ¶ added in v0.6.0
DetectFromDatabaseURL detects the database type given a database url.