network/pkg/database/database.go
2026-01-22 13:04:52 +02:00

25 lines
1.2 KiB
Go

// Package database provides a generic database interface for the deployment system.
// This allows different database implementations (RQLite, SQLite, etc.) to be used
// interchangeably throughout the deployment handlers.
package database
import "context"
// Database is a generic interface for database operations
// It provides methods for executing queries and commands that can be implemented
// by various database clients (RQLite, SQLite, etc.)
type Database interface {
// Query executes a SELECT query and scans results into dest
// dest should be a pointer to a slice of structs with `db` tags
Query(ctx context.Context, dest interface{}, query string, args ...interface{}) error
// QueryOne executes a SELECT query and scans a single result into dest
// dest should be a pointer to a struct with `db` tags
// Returns an error if no rows are found or multiple rows are returned
QueryOne(ctx context.Context, dest interface{}, query string, args ...interface{}) error
// Exec executes an INSERT, UPDATE, or DELETE query
// Returns the result (typically last insert ID or rows affected)
Exec(ctx context.Context, query string, args ...interface{}) (interface{}, error)
}