database

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ErrorIsNo added in v0.0.13

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 added in v0.0.13

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

type DBTX added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

type NarInfo struct {
	ID             int64
	Hash           string
	CreatedAt      time.Time
	UpdatedAt      sql.NullTime
	LastAccessedAt sql.NullTime
}

type Queries added in v0.0.13

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

func New added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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

func (*Queries) DeleteNarByHash added in v0.0.13

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

DeleteNarByHash

DELETE FROM nars
WHERE hash = ?

func (*Queries) DeleteNarByID added in v0.0.13

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

DeleteNarByID

DELETE FROM nars
WHERE id = ?

func (*Queries) DeleteNarInfoByHash added in v0.0.13

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

DeleteNarInfoByHash

DELETE FROM narinfos
WHERE hash = ?

func (*Queries) DeleteNarInfoByID added in v0.0.13

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

DeleteNarInfoByID

DELETE FROM narinfos
WHERE id = ?

func (*Queries) GetLeastUsedNars added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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

GetNarTotalSize

SELECT SUM(file_size) AS total_size
FROM nars

func (*Queries) TouchNar added in v0.0.13

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 added in v0.0.13

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 added in v0.0.13

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