mirror of
https://github.com/lukaszraczylo/gohoarder.git
synced 2026-06-26 02:49:29 +00:00
chore(schema): migrate to GORM V2 with multi-database support
- [x] Implement GORM V2 metadata store with SQLite, PostgreSQL, and MySQL support - [x] Add database migration system using gormigrate for schema versioning - [x] Create migration CLI tool with support for migrate, rollback, and status commands - [x] Add Docker support for migration container (Dockerfile.migrate) - [x] Implement automatic partition management for PostgreSQL time-series tables - [x] Add background aggregation worker for download statistics - [x] Support connection pooling configuration (max_open_conns, max_idle_conns, conn_max_lifetime) - [x] Add blocking mechanism based on vulnerability thresholds in stats and handlers - [x] Update Helm charts with migration init containers and multi-database configuration - [x] Replace deprecated SQLite store with optimized GORM implementation - [x] Add comprehensive integration tests for MySQL and PostgreSQL - [x] Update frontend to display blocked packages and storage utilization - [x] Add goreleaser configuration for migrate binary and container image - [x] Update configuration examples with database backend options and recommendations
This commit is contained in:
+37
-4
@@ -40,20 +40,53 @@ storage:
|
||||
domain: ""
|
||||
|
||||
metadata:
|
||||
backend: "sqlite" # sqlite, postgresql, file
|
||||
connection: "file:gohoarder.db?cache=shared&mode=rwc"
|
||||
# Backend: sqlite, postgresql, mysql, mariadb, file
|
||||
#
|
||||
# Choose based on your deployment:
|
||||
# - sqlite: Single instance, local storage (NOT for network filesystems like SMB/NFS!)
|
||||
# - postgresql: Production, multiple replicas, works with any storage including SMB/NFS
|
||||
# - mysql: Production alternative to PostgreSQL
|
||||
# - file: Simple file-based metadata (limited features)
|
||||
#
|
||||
# IMPORTANT: SQLite + SMB/NFS = Database locked errors!
|
||||
# For network storage (SMB, NFS), use PostgreSQL or MySQL.
|
||||
backend: "sqlite"
|
||||
connection: "file:gohoarder.db?cache=shared&mode=rwc" # Legacy, not used with GORM
|
||||
|
||||
# SQLite configuration (for local storage only)
|
||||
# Use with local storage classes (local-path, hostPath, or RWX like longhorn)
|
||||
# DO NOT use with SMB/NFS network storage!
|
||||
sqlite:
|
||||
path: "gohoarder.db"
|
||||
wal_mode: true
|
||||
wal_mode: true # Set to false for network filesystems if you must use SQLite
|
||||
|
||||
# PostgreSQL configuration (recommended for production)
|
||||
# Works with any storage including SMB/NFS
|
||||
# Supports multiple replicas and high availability
|
||||
postgresql:
|
||||
host: "localhost"
|
||||
port: 5432
|
||||
database: "gohoarder"
|
||||
user: "gohoarder"
|
||||
password: ""
|
||||
ssl_mode: "disable"
|
||||
ssl_mode: "disable" # disable, require, verify-ca, verify-full
|
||||
|
||||
# MySQL/MariaDB configuration (alternative to PostgreSQL)
|
||||
# Works with any storage including SMB/NFS
|
||||
mysql:
|
||||
host: "localhost"
|
||||
port: 3306
|
||||
database: "gohoarder"
|
||||
user: "gohoarder"
|
||||
password: ""
|
||||
charset: "utf8mb4"
|
||||
parse_time: true
|
||||
|
||||
# GORM connection pool settings (applies to all database backends)
|
||||
max_open_conns: 25 # Maximum number of open connections to the database
|
||||
max_idle_conns: 5 # Maximum number of idle connections in the pool
|
||||
conn_max_lifetime: 3600 # Maximum lifetime of a connection in seconds (1 hour)
|
||||
log_level: "warn" # GORM log level: silent, error, warn, info
|
||||
|
||||
cache:
|
||||
default_ttl: "168h" # 7 days
|
||||
|
||||
Reference in New Issue
Block a user