mysqldb

package
v0.8.5 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

type Adapter struct {
	*Queries
	// contains filtered or unexported fields
}

Adapter wraps mysqldb.Queries and provides the DB() method.

func NewAdapter

func NewAdapter(db *sql.DB) *Adapter

NewAdapter creates a new MySQL adapter.

func (*Adapter) DB

func (a *Adapter) DB() *sql.DB

DB returns the underlying database connection.

func (*Adapter) WithTx

func (a *Adapter) WithTx(tx *sql.Tx) *Adapter

WithTx returns a new Adapter with the queries scoped to the given transaction.

type AddNarInfoReferenceParams added in v0.8.0

type AddNarInfoReferenceParams struct {
	NarInfoID int64
	Reference string
}

type AddNarInfoSignatureParams added in v0.8.0

type AddNarInfoSignatureParams struct {
	NarInfoID int64
	Signature string
}

type Config

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

type CreateConfigParams

type CreateConfigParams struct {
	Key   string
	Value string
}

type CreateNarFileParams

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 DBTX

type DBTX interface {
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
	PrepareContext(context.Context, string) (*sql.Stmt, error)
	QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}

type DeleteNarFileByHashParams added in v0.8.0

type DeleteNarFileByHashParams struct {
	Hash        string
	Compression string
	Query       string
}

type GetLeastUsedNarFilesRow added in v0.8.0

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

type GetMigratedNarInfoHashesPaginatedParams added in v0.8.0

type GetMigratedNarInfoHashesPaginatedParams struct {
	Limit  int32
	Offset int32
}

type GetNarFileByHashAndCompressionAndQueryParams added in v0.8.0

type GetNarFileByHashAndCompressionAndQueryParams struct {
	Hash        string
	Compression string
	Query       string
}

type GetNarFileByHashAndCompressionAndQueryRow added in v0.8.0

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

type GetNarFileByIDRow added in v0.8.0

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

type GetNarFileByNarInfoIDRow added in v0.8.0

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

type GetNarInfoURLByNarFileHashParams added in v0.8.5

type GetNarInfoURLByNarFileHashParams struct {
	Hash        string
	Compression string
	Query       string
}

type GetOrphanedNarFilesRow added in v0.8.0

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

type LinkNarInfoToNarFileParams

type LinkNarInfoToNarFileParams struct {
	NarInfoID int64
	NarFileID int64
}

type NarFile

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

type NarInfo

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 NarinfoNarFile

type NarinfoNarFile struct {
	NarInfoID int64
	NarFileID int64
}

type NarinfoReference added in v0.8.0

type NarinfoReference struct {
	NarInfoID int64
	Reference string
}

type NarinfoSignature added in v0.8.0

type NarinfoSignature struct {
	NarInfoID int64
	Signature string
}

type Querier

type Querier interface {
	//AddNarInfoReference
	//
	//  INSERT INTO narinfo_references (
	//      narinfo_id, reference
	//  ) VALUES (
	//      ?, ?
	//  )
	AddNarInfoReference(ctx context.Context, arg AddNarInfoReferenceParams) error
	//AddNarInfoSignature
	//
	//  INSERT INTO narinfo_signatures (
	//      narinfo_id, signature
	//  ) VALUES (
	//      ?, ?
	//  )
	AddNarInfoSignature(ctx context.Context, arg AddNarInfoSignatureParams) error
	//CreateConfig
	//
	//  INSERT INTO config (
	//      `key`, value
	//  ) VALUES (
	//      ?, ?
	//  )
	CreateConfig(ctx context.Context, arg CreateConfigParams) (sql.Result, error)
	//CreateNarFile
	//
	//  INSERT INTO nar_files (
	//      hash, compression, `query`, file_size
	//  ) VALUES (
	//      ?, ?, ?, ?
	//  )
	//  ON DUPLICATE KEY UPDATE
	//      id = LAST_INSERT_ID(id),
	//      updated_at = CURRENT_TIMESTAMP
	CreateNarFile(ctx context.Context, arg CreateNarFileParams) (sql.Result, error)
	//CreateNarInfo
	//
	//  INSERT INTO narinfos (
	//      hash, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
	//  ) VALUES (
	//      ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
	//  )
	//  ON DUPLICATE KEY UPDATE
	//      id = LAST_INSERT_ID(id),
	//      store_path = IF(url IS NULL, VALUES(store_path), store_path),
	//      compression = IF(url IS NULL, VALUES(compression), compression),
	//      file_hash = IF(url IS NULL, VALUES(file_hash), file_hash),
	//      file_size = IF(url IS NULL, VALUES(file_size), file_size),
	//      nar_hash = IF(url IS NULL, VALUES(nar_hash), nar_hash),
	//      nar_size = IF(url IS NULL, VALUES(nar_size), nar_size),
	//      deriver = IF(url IS NULL, VALUES(deriver), deriver),
	//      system = IF(url IS NULL, VALUES(system), system),
	//      ca = IF(url IS NULL, VALUES(ca), ca),
	//      url = IF(url IS NULL, VALUES(url), url),
	//      updated_at = IF(url IS NULL, CURRENT_TIMESTAMP, updated_at)
	CreateNarInfo(ctx context.Context, arg CreateNarInfoParams) (sql.Result, error)
	//DeleteNarFileByHash
	//
	//  DELETE FROM nar_files
	//  WHERE hash = ? AND compression = ? AND `query` = ?
	DeleteNarFileByHash(ctx context.Context, arg DeleteNarFileByHashParams) (int64, error)
	//DeleteNarFileByID
	//
	//  DELETE FROM nar_files
	//  WHERE id = ?
	DeleteNarFileByID(ctx context.Context, id int64) (int64, error)
	//DeleteNarInfoByHash
	//
	//  DELETE FROM narinfos
	//  WHERE hash = ?
	DeleteNarInfoByHash(ctx context.Context, hash string) (int64, error)
	//DeleteNarInfoByID
	//
	//  DELETE FROM narinfos
	//  WHERE id = ?
	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 = ?
	GetConfigByID(ctx context.Context, id int64) (Config, error)
	//GetConfigByKey
	//
	//  SELECT id, `key`, value, created_at, updated_at
	//  FROM config
	//  WHERE `key` = ?
	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)
	//  ) <= ?
	GetLeastUsedNarFiles(ctx context.Context, fileSize uint64) ([]GetLeastUsedNarFilesRow, 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)
	//      )
	//  ) <= ?
	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 ? OFFSET ?
	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 = ? AND compression = ? AND `query` = ?
	GetNarFileByHashAndCompressionAndQuery(ctx context.Context, arg GetNarFileByHashAndCompressionAndQueryParams) (GetNarFileByHashAndCompressionAndQueryRow, error)
	//GetNarFileByID
	//
	//  SELECT id, hash, compression, file_size, `query`, created_at, updated_at, last_accessed_at
	//  FROM nar_files
	//  WHERE id = ?
	GetNarFileByID(ctx context.Context, id int64) (GetNarFileByIDRow, 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 = ?
	GetNarFileByNarInfoID(ctx context.Context, narinfoID int64) (GetNarFileByNarInfoIDRow, error)
	//GetNarFileCount
	//
	//  SELECT CAST(COUNT(*) AS SIGNED) 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 = ?
	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 = ?
	GetNarInfoByID(ctx context.Context, id int64) (NarInfo, error)
	//GetNarInfoCount
	//
	//  SELECT CAST(COUNT(*) AS SIGNED) 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 = ?
	GetNarInfoHashesByNarFileID(ctx context.Context, narFileID int64) ([]string, error)
	//GetNarInfoReferences
	//
	//  SELECT reference
	//  FROM narinfo_references
	//  WHERE narinfo_id = ?
	GetNarInfoReferences(ctx context.Context, narinfoID int64) ([]string, error)
	//GetNarInfoSignatures
	//
	//  SELECT signature
	//  FROM narinfo_signatures
	//  WHERE narinfo_id = ?
	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 = ? AND nf.compression = ? AND nf.query = ?
	//  LIMIT 1
	GetNarInfoURLByNarFileHash(ctx context.Context, arg GetNarInfoURLByNarFileHashParams) (sql.NullString, error)
	//GetNarTotalSize
	//
	//  SELECT CAST(COALESCE(SUM(file_size), 0) AS SIGNED) 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) ([]GetOrphanedNarFilesRow, 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 = ? 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 (
	//      ?, ?
	//  )
	//  ON DUPLICATE KEY UPDATE narinfo_id = narinfo_id
	LinkNarInfoToNarFile(ctx context.Context, arg LinkNarInfoToNarFileParams) error
	//SetConfig
	//
	//  INSERT INTO config (
	//      `key`, value
	//  ) VALUES (
	//      ?, ?
	//  )
	//  ON DUPLICATE KEY UPDATE
	//      value = VALUES(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 = ? AND compression = ? AND `query` = ?
	TouchNarFile(ctx context.Context, arg TouchNarFileParams) (int64, error)
	//TouchNarInfo
	//
	//  UPDATE narinfos
	//  SET
	//      last_accessed_at = CURRENT_TIMESTAMP,
	//      updated_at = CURRENT_TIMESTAMP
	//  WHERE hash = ?
	TouchNarInfo(ctx context.Context, hash string) (int64, error)
}

type Queries

type Queries struct {
	// contains filtered or unexported fields
}

func New

func New(db DBTX) *Queries

func (*Queries) AddNarInfoReference added in v0.8.0

func (q *Queries) AddNarInfoReference(ctx context.Context, arg AddNarInfoReferenceParams) error

AddNarInfoReference

INSERT INTO narinfo_references (
    narinfo_id, reference
) VALUES (
    ?, ?
)

func (*Queries) AddNarInfoSignature added in v0.8.0

func (q *Queries) AddNarInfoSignature(ctx context.Context, arg AddNarInfoSignatureParams) error

AddNarInfoSignature

INSERT INTO narinfo_signatures (
    narinfo_id, signature
) VALUES (
    ?, ?
)

func (*Queries) CreateConfig

func (q *Queries) CreateConfig(ctx context.Context, arg CreateConfigParams) (sql.Result, error)

CreateConfig

INSERT INTO config (
    `key`, value
) VALUES (
    ?, ?
)

func (*Queries) CreateNarFile

func (q *Queries) CreateNarFile(ctx context.Context, arg CreateNarFileParams) (sql.Result, error)

CreateNarFile

INSERT INTO nar_files (
    hash, compression, `query`, file_size
) VALUES (
    ?, ?, ?, ?
)
ON DUPLICATE KEY UPDATE
    id = LAST_INSERT_ID(id),
    updated_at = CURRENT_TIMESTAMP

func (*Queries) CreateNarInfo

func (q *Queries) CreateNarInfo(ctx context.Context, arg CreateNarInfoParams) (sql.Result, error)

CreateNarInfo

INSERT INTO narinfos (
    hash, store_path, url, compression, file_hash, file_size, nar_hash, nar_size, deriver, system, ca
) VALUES (
    ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)
ON DUPLICATE KEY UPDATE
    id = LAST_INSERT_ID(id),
    store_path = IF(url IS NULL, VALUES(store_path), store_path),
    compression = IF(url IS NULL, VALUES(compression), compression),
    file_hash = IF(url IS NULL, VALUES(file_hash), file_hash),
    file_size = IF(url IS NULL, VALUES(file_size), file_size),
    nar_hash = IF(url IS NULL, VALUES(nar_hash), nar_hash),
    nar_size = IF(url IS NULL, VALUES(nar_size), nar_size),
    deriver = IF(url IS NULL, VALUES(deriver), deriver),
    system = IF(url IS NULL, VALUES(system), system),
    ca = IF(url IS NULL, VALUES(ca), ca),
    url = IF(url IS NULL, VALUES(url), url),
    updated_at = IF(url IS NULL, CURRENT_TIMESTAMP, updated_at)

func (*Queries) DeleteNarFileByHash

func (q *Queries) DeleteNarFileByHash(ctx context.Context, arg DeleteNarFileByHashParams) (int64, error)

DeleteNarFileByHash

DELETE FROM nar_files
WHERE hash = ? AND compression = ? AND `query` = ?

func (*Queries) DeleteNarFileByID

func (q *Queries) DeleteNarFileByID(ctx context.Context, id int64) (int64, error)

DeleteNarFileByID

DELETE FROM nar_files
WHERE id = ?

func (*Queries) DeleteNarInfoByHash

func (q *Queries) DeleteNarInfoByHash(ctx context.Context, hash string) (int64, error)

DeleteNarInfoByHash

DELETE FROM narinfos
WHERE hash = ?

func (*Queries) DeleteNarInfoByID

func (q *Queries) DeleteNarInfoByID(ctx context.Context, id int64) (int64, error)

DeleteNarInfoByID

DELETE FROM narinfos
WHERE id = ?

func (*Queries) DeleteOrphanedNarFiles

func (q *Queries) DeleteOrphanedNarFiles(ctx context.Context) (int64, error)

DeleteOrphanedNarFiles

DELETE FROM nar_files
WHERE id NOT IN (
    SELECT DISTINCT nar_file_id
    FROM narinfo_nar_files
)

func (*Queries) DeleteOrphanedNarInfos

func (q *Queries) DeleteOrphanedNarInfos(ctx context.Context) (int64, error)

DeleteOrphanedNarInfos

DELETE FROM narinfos
WHERE id NOT IN (
    SELECT DISTINCT narinfo_id
    FROM narinfo_nar_files
)

func (*Queries) GetConfigByID

func (q *Queries) GetConfigByID(ctx context.Context, id int64) (Config, error)

GetConfigByID

SELECT id, `key`, value, created_at, updated_at
FROM config
WHERE id = ?

func (*Queries) GetConfigByKey

func (q *Queries) GetConfigByKey(ctx context.Context, key string) (Config, error)

GetConfigByKey

SELECT id, `key`, value, created_at, updated_at
FROM config
WHERE `key` = ?

func (*Queries) GetLeastUsedNarFiles

func (q *Queries) GetLeastUsedNarFiles(ctx context.Context, fileSize uint64) ([]GetLeastUsedNarFilesRow, 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)
) <= ?

func (*Queries) GetLeastUsedNarInfos

func (q *Queries) GetLeastUsedNarInfos(ctx context.Context, fileSize uint64) ([]NarInfo, 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)
    )
) <= ?

func (*Queries) GetMigratedNarInfoHashes added in v0.8.0

func (q *Queries) GetMigratedNarInfoHashes(ctx context.Context) ([]string, error)

Get all narinfo hashes that have a URL (migrated).

SELECT hash
FROM narinfos
WHERE url IS NOT NULL

func (*Queries) GetMigratedNarInfoHashesPaginated added in v0.8.0

func (q *Queries) GetMigratedNarInfoHashesPaginated(ctx context.Context, arg GetMigratedNarInfoHashesPaginatedParams) ([]string, error)

Get migrated narinfo hashes with pagination support.

SELECT hash
FROM narinfos
WHERE url IS NOT NULL
ORDER BY hash
LIMIT ? OFFSET ?

func (*Queries) GetNarFileByHashAndCompressionAndQuery added in v0.8.0

GetNarFileByHashAndCompressionAndQuery

SELECT id, hash, compression, file_size, `query`, created_at, updated_at, last_accessed_at
FROM nar_files
WHERE hash = ? AND compression = ? AND `query` = ?

func (*Queries) GetNarFileByID

func (q *Queries) GetNarFileByID(ctx context.Context, id int64) (GetNarFileByIDRow, error)

GetNarFileByID

SELECT id, hash, compression, file_size, `query`, created_at, updated_at, last_accessed_at
FROM nar_files
WHERE id = ?

func (*Queries) GetNarFileByNarInfoID

func (q *Queries) GetNarFileByNarInfoID(ctx context.Context, narinfoID int64) (GetNarFileByNarInfoIDRow, 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 = ?

func (*Queries) GetNarFileCount added in v0.7.1

func (q *Queries) GetNarFileCount(ctx context.Context) (int64, error)

GetNarFileCount

SELECT CAST(COUNT(*) AS SIGNED) AS count
FROM nar_files

func (*Queries) GetNarInfoByHash

func (q *Queries) GetNarInfoByHash(ctx context.Context, hash string) (NarInfo, 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 = ?

func (*Queries) GetNarInfoByID

func (q *Queries) GetNarInfoByID(ctx context.Context, id int64) (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 = ?

func (*Queries) GetNarInfoCount added in v0.7.1

func (q *Queries) GetNarInfoCount(ctx context.Context) (int64, error)

GetNarInfoCount

SELECT CAST(COUNT(*) AS SIGNED) AS count
FROM narinfos

func (*Queries) GetNarInfoHashesByNarFileID

func (q *Queries) GetNarInfoHashesByNarFileID(ctx context.Context, narFileID int64) ([]string, 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 = ?

func (*Queries) GetNarInfoReferences added in v0.8.0

func (q *Queries) GetNarInfoReferences(ctx context.Context, narinfoID int64) ([]string, error)

GetNarInfoReferences

SELECT reference
FROM narinfo_references
WHERE narinfo_id = ?

func (*Queries) GetNarInfoSignatures added in v0.8.0

func (q *Queries) GetNarInfoSignatures(ctx context.Context, narinfoID int64) ([]string, error)

GetNarInfoSignatures

SELECT signature
FROM narinfo_signatures
WHERE narinfo_id = ?

func (*Queries) GetNarInfoURLByNarFileHash added in v0.8.5

func (q *Queries) GetNarInfoURLByNarFileHash(ctx context.Context, arg GetNarInfoURLByNarFileHashParams) (sql.NullString, 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 = ? AND nf.compression = ? AND nf.query = ?
LIMIT 1

func (*Queries) GetNarTotalSize

func (q *Queries) GetNarTotalSize(ctx context.Context) (int64, error)

GetNarTotalSize

SELECT CAST(COALESCE(SUM(file_size), 0) AS SIGNED) AS total_size
FROM nar_files

func (*Queries) GetOrphanedNarFiles

func (q *Queries) GetOrphanedNarFiles(ctx context.Context) ([]GetOrphanedNarFilesRow, 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

func (*Queries) GetUnmigratedNarInfoHashes added in v0.8.0

func (q *Queries) GetUnmigratedNarInfoHashes(ctx context.Context) ([]string, error)

Get all narinfo hashes that have no URL (unmigrated).

SELECT hash
FROM narinfos
WHERE url IS NULL

func (*Queries) IsNarInfoMigrated added in v0.8.0

func (q *Queries) IsNarInfoMigrated(ctx context.Context, hash string) (bool, error)

Check if a narinfo hash has been migrated (has a URL).

SELECT EXISTS(
    SELECT 1
    FROM narinfos
    WHERE hash = ? AND url IS NOT NULL
) AS is_migrated

func (*Queries) LinkNarInfoToNarFile

func (q *Queries) LinkNarInfoToNarFile(ctx context.Context, arg LinkNarInfoToNarFileParams) error

LinkNarInfoToNarFile

INSERT INTO narinfo_nar_files (
    narinfo_id, nar_file_id
) VALUES (
    ?, ?
)
ON DUPLICATE KEY UPDATE narinfo_id = narinfo_id

func (*Queries) SetConfig

func (q *Queries) SetConfig(ctx context.Context, arg SetConfigParams) error

SetConfig

INSERT INTO config (
    `key`, value
) VALUES (
    ?, ?
)
ON DUPLICATE KEY UPDATE
    value = VALUES(value),
    updated_at = CURRENT_TIMESTAMP

func (*Queries) TouchNarFile

func (q *Queries) TouchNarFile(ctx context.Context, arg TouchNarFileParams) (int64, error)

TouchNarFile

UPDATE nar_files
SET
    last_accessed_at = CURRENT_TIMESTAMP,
    updated_at = CURRENT_TIMESTAMP
WHERE hash = ? AND compression = ? AND `query` = ?

func (*Queries) TouchNarInfo

func (q *Queries) TouchNarInfo(ctx context.Context, hash string) (int64, error)

TouchNarInfo

UPDATE narinfos
SET
    last_accessed_at = CURRENT_TIMESTAMP,
    updated_at = CURRENT_TIMESTAMP
WHERE hash = ?

func (*Queries) WithTx

func (q *Queries) WithTx(tx *sql.Tx) *Queries

type SetConfigParams

type SetConfigParams struct {
	Key   string
	Value string
}

type TouchNarFileParams added in v0.8.0

type TouchNarFileParams struct {
	Hash        string
	Compression string
	Query       string
}

Jump to

Keyboard shortcuts

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