db

package
v0.0.16 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2026 License: BSD-3-Clause Imports: 12 Imported by: 0

Documentation

Overview

Package db provides database access for archive analysis cache.

Package db provides database access for media metadata.

Index

Constants

View Source
const (
	ShrinkStatusNotProcessed = 0 // File has not been processed yet
	ShrinkStatusSuccess      = 1 // Successfully processed and saved space
	ShrinkStatusTooLarge     = 2 // Transcoded file was larger than original (kept original)
	ShrinkStatusUnplayable   = 3 // File was unplayable/corrupt
	ShrinkStatusError        = 5 // Processing error (file-specific, not environment)
	ShrinkStatusSkipped      = 6 // Skipped (no savings, already optimized, etc.)
	ShrinkStatusBroken       = 7 // File is broken (moved to broken directory)
)

ShrinkStatus codes for tracking processing outcomes 0 = not processed, 1 = success, >1 = various failure/skip states

Variables

This section is empty.

Functions

func AddMediaEntry

func AddMediaEntry(databases []*sql.DB, path string, size int64, duration float64, status int)

AddMediaEntry adds a new media entry to the database with a specific status

func AddMediaEntryWithDimensions added in v0.0.7

func AddMediaEntryWithDimensions(databases []*sql.DB, path string, size int64, duration float64, width, height int, status int)

AddMediaEntryWithDimensions adds a new media entry to the database with dimensions and status

func BeginImmediate added in v0.0.6

func BeginImmediate(db *sql.DB) (*sql.Tx, error)

BeginImmediate starts a new transaction with IMMEDIATE mode. This acquires a write lock immediately, respecting the busy_timeout. Use this instead of db.Begin() to avoid SQLITE_BUSY errors from deferred lock upgrades.

func BulkMarkOptimizedExtensions added in v0.0.3

func BulkMarkOptimizedExtensions(databases []*sql.DB)

BulkMarkOptimizedExtensions marks files with already-optimized extensions as shrinked

func BulkSetArchiveCache added in v0.0.15

func BulkSetArchiveCache(db *sql.DB, entries []ArchiveCacheEntry) error

BulkSetArchiveCache stores multiple cache entries in a single transaction

func Connect

func Connect(dbPath string) (*sql.DB, error)

Connect connects to a SQLite database

func ConnectWithInit

func ConnectWithInit(dbPath string) (*sql.DB, string, error)

ConnectWithInit connects to a SQLite database and validates the schema

func DatabaseExists

func DatabaseExists(path string) bool

DatabaseExists checks if a database file exists and is valid

func DeleteArchiveCache added in v0.0.15

func DeleteArchiveCache(db *sql.DB, path string) error

DeleteArchiveCache removes a cache entry for a specific archive

func InitArchiveCache added in v0.0.15

func InitArchiveCache(db *sql.DB) error

InitArchiveCache creates the archive_cache table if it doesn't exist

func IsDatabaseDirectory

func IsDatabaseDirectory(path string) bool

IsDatabaseDirectory checks if a path is a directory (not a database file)

func IsDatabaseFile

func IsDatabaseFile(path string) bool

IsDatabaseFile checks if a path is a SQLite database file

func MarkBroken added in v0.0.6

func MarkBroken(databases []*sql.DB, path string)

MarkBroken marks a file as broken (moved to broken directory)

func MarkDeleted

func MarkDeleted(databases []*sql.DB, path string)

MarkDeleted marks a file as deleted in all provided databases

func MarkProcessingError added in v0.0.6

func MarkProcessingError(databases []*sql.DB, path string)

MarkProcessingError marks a file as having a processing error

func MarkShrinked

func MarkShrinked(databases []*sql.DB, path string, status int)

MarkShrinked marks a file as shrinked in the database with the given status code

func MarkSkipped added in v0.0.6

func MarkSkipped(databases []*sql.DB, path string)

MarkSkipped marks a file as skipped (no savings, already optimized, etc.)

func MarkSuccess added in v0.0.6

func MarkSuccess(databases []*sql.DB, path string)

MarkSuccess marks a file as successfully processed

func MarkTooLarge added in v0.0.6

func MarkTooLarge(databases []*sql.DB, path string)

MarkTooLarge marks a file as processed but result was larger than original

func MarkUnplayable added in v0.0.6

func MarkUnplayable(databases []*sql.DB, path string)

MarkUnplayable marks a file as unplayable/corrupt

func ResolveDatabasePath

func ResolveDatabasePath(path string) (string, error)

ResolveDatabasePath resolves a database path to an absolute path

func SetArchiveCache added in v0.0.15

func SetArchiveCache(db *sql.DB, entry *ArchiveCacheEntry) error

SetArchiveCache stores or updates archive analysis results in the cache

func UpdateMedia

func UpdateMedia(databases []*sql.DB, oldPath, newPath string, newSize int64, duration float64, width, height int)

UpdateMedia replaces an old path with a new one and updates its size/duration/dimensions

Types

type ArchiveCacheEntry added in v0.0.15

type ArchiveCacheEntry struct {
	Path             string
	TotalArchiveSize int64
	FutureSize       int64
	ProcessingTime   int
	HasProcessable   bool
	IsBroken         bool
	PartFiles        string // JSON-encoded list of part file paths
}

ArchiveCacheEntry represents a cached archive analysis result

func GetArchiveCache added in v0.0.15

func GetArchiveCache(db *sql.DB, path string) (*ArchiveCacheEntry, error)

GetArchiveCache retrieves cached analysis results for an archive

type MediaRecord

type MediaRecord struct {
	Path           string
	VideoCodecs    string
	AudioCodecs    string
	SubtitleCodecs string
	MediaType      string
	Size           int64
	Duration       float64
	VideoCount     int
	AudioCount     int
	Width          int
	Height         int
	IsShrinked     int // Status code: 0=not processed, 1=success, >1=various states
}

MediaRecord represents a row in the media table

func LoadMediaFromDB

func LoadMediaFromDB(db *sql.DB, forceShrink bool, videoOnly, audioOnly, imageOnly, textOnly bool) ([]MediaRecord, error)

LoadMediaFromDB loads all processable media from a database

Jump to

Keyboard shortcuts

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