database

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ErrorIsNo

func ErrorIsNo(err error, errNo sqlite3.ErrNo) bool

ErrorIsNo returns true if the error is an sqlite3 error and its code match the errNo code.

Types

type CreateNarParams

type CreateNarParams struct {
	NarInfoID   int64
	Hash        string
	Compression string
	Query       string
	FileSize    uint64
}

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 Nar

type Nar struct {
	ID             int64
	NarInfoID      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
}

type Queries

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

func New

func New(db DBTX) *Queries

func Open

func Open(dbURL string) (*Queries, error)

Open opens a sqlite3 database, and creates it if necessary.

func (*Queries) CreateNar

func (q *Queries) CreateNar(ctx context.Context, arg CreateNarParams) (Nar, error)

CreateNar

INSERT INTO nars (
    narinfo_id, hash, compression, query, file_size
) VALUES (
    ?, ?, ?, ?, ?
)
RETURNING id, narinfo_id, hash, compression, file_size, created_at, updated_at, last_accessed_at, "query"

func (*Queries) CreateNarInfo

func (q *Queries) CreateNarInfo(ctx context.Context, hash string) (NarInfo, error)

CreateNarInfo

INSERT INTO narinfos (
    hash
) VALUES (
    ?
)
RETURNING id, hash, created_at, updated_at, last_accessed_at

func (*Queries) DB

func (q *Queries) DB() *sql.DB

func (*Queries) DeleteNarByHash

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

DeleteNarByHash

DELETE FROM nars
WHERE hash = ?

func (*Queries) DeleteNarByID

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

DeleteNarByID

DELETE FROM nars
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) GetLeastUsedNars

func (q *Queries) GetLeastUsedNars(ctx context.Context, fileSize uint64) ([]Nar, error)

GetLeastUsedNars

SELECT n1.id, n1.narinfo_id, n1.hash, n1.compression, n1.file_size, n1.created_at, n1.updated_at, n1.last_accessed_at, n1."query"
FROM nars n1
WHERE (
    SELECT SUM(n2.file_size)
    FROM nars n2
    WHERE n2.last_accessed_at <= n1.last_accessed_at
) <= ?

func (*Queries) GetNarByHash

func (q *Queries) GetNarByHash(ctx context.Context, hash string) (Nar, error)

GetNarByHash

SELECT id, narinfo_id, hash, compression, file_size, created_at, updated_at, last_accessed_at, "query"
FROM nars
WHERE hash = ?

func (*Queries) GetNarByID

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

GetNarByID

SELECT id, narinfo_id, hash, compression, file_size, created_at, updated_at, last_accessed_at, "query"
FROM nars
WHERE id = ?

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
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
FROM narinfos
WHERE id = ?

func (*Queries) GetNarTotalSize

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

GetNarTotalSize

SELECT SUM(file_size) AS total_size
FROM nars

func (*Queries) TouchNar

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

TouchNar

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

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

Jump to

Keyboard shortcuts

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