database

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package database gère la connexion SQL (SQLite ou PostgreSQL) et les migrations automatiques de JellyGate.

Package database — settings.go

CRUD pour la table `settings` (clé/valeur). Stocke la configuration LDAP, SMTP et Webhooks en JSON, ainsi que des flags comme ldap_enabled.

Index

Constants

View Source
const (
	DialectSQLite   = "sqlite"
	DialectPostgres = "postgres"
)
View Source
const (
	SettingLDAPConfig                  = "ldap_config"             // JSON: config.LDAPConfig
	SettingSMTPConfig                  = "smtp_config"             // JSON: config.SMTPConfig
	SettingWebhooksConfig              = "webhooks_config"         // JSON: config.WebhooksConfig
	SettingPortalLinks                 = "portal_links"            // JSON: config.PortalLinksConfig
	SettingEmailTemplates              = "email_templates"         // JSON: config.EmailTemplatesConfig
	SettingEmailTemplatesByLang        = "email_templates_by_lang" // JSON: map[lang]config.EmailTemplatesConfig
	SettingEmailTemplatesMultilingual  = "email_templates_multilingual_enabled"
	SettingBackupConfig                = "backup_config"                  // JSON: config.BackupConfig
	SettingProductFeatures             = "product_features"               // JSON: config.ProductFeaturesConfig
	SettingJellyfinPresets             = "jellyfin_presets"               // JSON: []config.JellyfinPolicyPreset
	SettingGroupMappings               = "group_mappings"                 // JSON: []config.GroupPolicyMapping
	SettingInviteProfile               = "invite_profile"                 // JSON: config.InvitationProfileConfig
	SettingAuthSessionConfig           = "auth_session_config"            // JSON: AuthSessionConfig
	SettingBackupLastRun               = "backup_last_run"                // Date locale YYYY-MM-DD
	SettingDefaultLang                 = "default_lang"                   // Default language of the server (fr, en, de, es, it, nl, pl, pt-br, ru, zh)
	SettingEmailVerificationBackfillV1 = "email_verification_backfill_v1" // Flag one-shot pour les comptes historiques
	SettingDefaultBackupTaskCleanupV1  = "default_backup_task_cleanup_v1" // Flag one-shot pour l'ancien doublon backup Automation
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthSessionConfig

type AuthSessionConfig struct {
	Remember30Days bool  `json:"remember_30_days"`
	RevokedBefore  int64 `json:"revoked_before"`
}

AuthSessionConfig controle la duree des sessions persistantes et la revocation globale des cookies deja signes.

func DefaultAuthSessionConfig

func DefaultAuthSessionConfig() AuthSessionConfig

DefaultAuthSessionConfig conserve le comportement existant par defaut.

func (AuthSessionConfig) AcceptsIssuedAt

func (cfg AuthSessionConfig) AcceptsIssuedAt(issuedAt int64) bool

AcceptsIssuedAt indique si une session creee a cette date reste valide.

type DB

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

DB encapsule la connexion SQL et expose les méthodes d'accès aux données.

func New

func New(dbCfg config.DatabaseConfig, dataDir, secretKey string) (*DB, error)

New crée une nouvelle instance DB et exécute les migrations.

func (*DB) Begin

func (db *DB) Begin() (*Tx, error)

Begin démarre une transaction SQL adaptée au dialecte actif.

func (*DB) Close

func (db *DB) Close() error

Close ferme proprement la connexion à la base de données.

func (*DB) Conn

func (db *DB) Conn() *sql.DB

Conn renvoie la connexion SQL brute (a eviter hors cas specifiques).

func (*DB) DeleteClosedInvitations

func (db *DB) DeleteClosedInvitations(now time.Time) (int64, error)

DeleteClosedInvitations supprime les invitations expirées ou qui ont atteint leur quota.

func (*DB) Driver

func (db *DB) Driver() string

Driver renvoie le dialecte actif: sqlite ou postgres.

func (*DB) Exec

func (db *DB) Exec(query string, args ...interface{}) (sql.Result, error)

Exec exécute une requête en adaptant le dialecte SQL si nécessaire.

func (*DB) ExecContext

func (db *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

ExecContext exécute une requête SQL avec un contexte annulation.

func (*DB) GetAllSettings

func (db *DB) GetAllSettings() (map[string]string, error)

GetAllSettings récupère tous les paramètres sous forme de map.

func (*DB) GetAuthSessionConfig

func (db *DB) GetAuthSessionConfig() (AuthSessionConfig, error)

GetAuthSessionConfig retourne la politique de session admin.

func (*DB) GetBackupConfig

func (db *DB) GetBackupConfig() (config.BackupConfig, error)

GetBackupConfig récupère la configuration des sauvegardes planifiées.

func (*DB) GetBackupLastRun

func (db *DB) GetBackupLastRun() string

GetBackupLastRun retourne la date locale YYYY-MM-DD du dernier backup auto.

func (*DB) GetConfig

func (db *DB) GetConfig() config.DatabaseConfig

GetConfig retourne la configuration de connexion.

func (*DB) GetDefaultLang

func (db *DB) GetDefaultLang() string

GetDefaultLang returns the default language of the server. Returns "en" if the setting is not found or in case of error.

func (*DB) GetEmailTemplatesConfig

func (db *DB) GetEmailTemplatesConfig() (config.EmailTemplatesConfig, error)

GetEmailTemplatesConfig retourne la configuration active de la langue par defaut.

func (*DB) GetEmailTemplatesConfigByLanguage

func (db *DB) GetEmailTemplatesConfigByLanguage() (map[string]config.EmailTemplatesConfig, error)

GetEmailTemplatesConfigByLanguage retourne tous les templates par langue avec fallback compatible vers le stockage legacy.

func (*DB) GetEmailTemplatesConfigForLang

func (db *DB) GetEmailTemplatesConfigForLang(lang string) (config.EmailTemplatesConfig, string, error)

GetEmailTemplatesConfigForLang retourne les templates pour la langue demandee avec fallback sur la langue par defaut.

func (*DB) GetEmailTemplatesMultilingualEnabled

func (db *DB) GetEmailTemplatesMultilingualEnabled() bool

GetEmailTemplatesMultilingualEnabled retourne true par defaut pour conserver le comportement multi-langue des installations existantes.

func (*DB) GetGroupPolicyMappings

func (db *DB) GetGroupPolicyMappings() ([]config.GroupPolicyMapping, error)

GetGroupPolicyMappings récupère les mappings groupe -> preset.

func (*DB) GetInvitationProfileConfig

func (db *DB) GetInvitationProfileConfig() (config.InvitationProfileConfig, error)

GetInvitationProfileConfig recupere la politique globale appliquee aux nouvelles invitations.

func (*DB) GetInvitationStats

func (db *DB) GetInvitationStats() (InvitationStats, error)

GetInvitationStats retourne la répartition des invitations (utilisées, expirées, actives).

func (*DB) GetJellyfinPolicyPresets

func (db *DB) GetJellyfinPolicyPresets() ([]config.JellyfinPolicyPreset, error)

GetJellyfinPolicyPresets récupère les presets de politique Jellyfin.

func (*DB) GetLDAPConfig

func (db *DB) GetLDAPConfig() (config.LDAPConfig, error)

GetLDAPConfig récupère la configuration LDAP depuis la base. Retourne une config par défaut (Enabled=false) si non configurée.

func (*DB) GetPortalLinksConfig

func (db *DB) GetPortalLinksConfig() (config.PortalLinksConfig, error)

GetPortalLinksConfig récupère les URL publiques (Jellyfin/Jellyseerr/JellyTrack).

func (*DB) GetProductFeaturesConfig

func (db *DB) GetProductFeaturesConfig() (config.ProductFeaturesConfig, error)

GetProductFeaturesConfig récupère la configuration des modules produit avances.

func (*DB) GetRegistrationHistory

func (db *DB) GetRegistrationHistory(days int) ([]RegistrationDay, error)

GetRegistrationHistory retourne le nombre d'inscriptions par jour sur les X derniers jours.

func (*DB) GetSMTPConfig

func (db *DB) GetSMTPConfig() (config.SMTPConfig, error)

GetSMTPConfig récupère la configuration SMTP depuis la base. Retourne une config par défaut si non configurée.

func (*DB) GetSetting

func (db *DB) GetSetting(key string) (string, error)

GetSetting récupère la valeur brute d'un paramètre par sa clé. Retourne "" si la clé n'existe pas.

func (*DB) GetWebhooksConfig

func (db *DB) GetWebhooksConfig() (config.WebhooksConfig, error)

GetWebhooksConfig récupère la configuration Webhooks depuis la base.

func (*DB) IsLDAPEnabled

func (db *DB) IsLDAPEnabled() bool

IsLDAPEnabled vérifie rapidement si l'intégration LDAP est activée.

func (*DB) IsPostgres

func (db *DB) IsPostgres() bool

func (*DB) IsSQLite

func (db *DB) IsSQLite() bool

IsSQLite retourne true si la base courante est SQLite.

func (*DB) LogAction

func (db *DB) LogAction(action, actor, target, details string) error

LogAction enregistre une action dans le journal d'audit.

func (*DB) LogSecurityEvent

func (db *DB) LogSecurityEvent(event SecurityEvent) error

LogSecurityEvent enregistre un evenement securite structure.

func (*DB) Path

func (db *DB) Path() string

Path renvoie le chemin du fichier SQLite. Vide en mode PostgreSQL.

func (*DB) Query

func (db *DB) Query(query string, args ...interface{}) (*Rows, error)

Query exécute une requête SELECT en adaptant le dialecte SQL.

func (*DB) QueryRow

func (db *DB) QueryRow(query string, args ...interface{}) *Row

QueryRow exécute une requête SELECT avec un seul résultat.

func (*DB) QueryRowContext

func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row

QueryRowContext exécute une requête SELECT avec un seul résultat et un contexte.

func (*DB) RevokeAuthSessionsBefore

func (db *DB) RevokeAuthSessionsBefore(timestamp int64) (AuthSessionConfig, error)

RevokeAuthSessionsBefore invalide toutes les sessions creees avant ou a ce timestamp.

func (*DB) SaveAuthSessionConfig

func (db *DB) SaveAuthSessionConfig(cfg AuthSessionConfig) error

SaveAuthSessionConfig sauvegarde la politique de session admin.

func (*DB) SaveBackupConfig

func (db *DB) SaveBackupConfig(cfg config.BackupConfig) error

SaveBackupConfig sauvegarde la configuration des sauvegardes planifiées.

func (*DB) SaveEmailTemplatesConfig

func (db *DB) SaveEmailTemplatesConfig(cfg config.EmailTemplatesConfig) error

SaveEmailTemplatesConfig sauvegarde la configuration des templates sur la langue par defaut de l'instance.

func (*DB) SaveEmailTemplatesConfigByLanguage

func (db *DB) SaveEmailTemplatesConfigByLanguage(values map[string]config.EmailTemplatesConfig) error

SaveEmailTemplatesConfigByLanguage sauvegarde les templates par langue et met a jour la cle legacy sur la langue par defaut.

func (*DB) SaveEmailTemplatesConfigForLang

func (db *DB) SaveEmailTemplatesConfigForLang(lang string, cfg config.EmailTemplatesConfig) error

SaveEmailTemplatesConfigForLang sauvegarde les templates pour une langue cible.

func (*DB) SaveGroupPolicyMappings

func (db *DB) SaveGroupPolicyMappings(mappings []config.GroupPolicyMapping) error

SaveGroupPolicyMappings sauvegarde les mappings groupe -> preset.

func (*DB) SaveInvitationProfileConfig

func (db *DB) SaveInvitationProfileConfig(cfg config.InvitationProfileConfig) error

SaveInvitationProfileConfig sauvegarde la politique globale des invitations.

func (*DB) SaveJellyfinPolicyPresets

func (db *DB) SaveJellyfinPolicyPresets(presets []config.JellyfinPolicyPreset) error

SaveJellyfinPolicyPresets sauvegarde les presets de politique Jellyfin.

func (*DB) SaveLDAPConfig

func (db *DB) SaveLDAPConfig(cfg config.LDAPConfig) error

SaveLDAPConfig sauvegarde la configuration LDAP dans la base.

func (*DB) SavePortalLinksConfig

func (db *DB) SavePortalLinksConfig(cfg config.PortalLinksConfig) error

SavePortalLinksConfig sauvegarde les URL publiques.

func (*DB) SaveProductFeaturesConfig

func (db *DB) SaveProductFeaturesConfig(cfg config.ProductFeaturesConfig) error

SaveProductFeaturesConfig sauvegarde la configuration des modules produit avances.

func (*DB) SaveSMTPConfig

func (db *DB) SaveSMTPConfig(cfg config.SMTPConfig) error

SaveSMTPConfig sauvegarde la configuration SMTP dans la base.

func (*DB) SaveWebhooksConfig

func (db *DB) SaveWebhooksConfig(cfg config.WebhooksConfig) error

SaveWebhooksConfig sauvegarde la configuration Webhooks dans la base.

func (*DB) SetBackupLastRun

func (db *DB) SetBackupLastRun(day string) error

SetBackupLastRun enregistre la date locale YYYY-MM-DD du dernier backup auto.

func (*DB) SetEmailTemplatesMultilingualEnabled

func (db *DB) SetEmailTemplatesMultilingualEnabled(enabled bool) error

SetEmailTemplatesMultilingualEnabled active ou desactive la selection de langue des templates sans supprimer les traductions deja stockees.

func (*DB) SetSetting

func (db *DB) SetSetting(key, value string) error

SetSetting insère ou met à jour un paramètre (UPSERT).

type InvitationStats

type InvitationStats struct {
	Total   int `json:"total"`
	Used    int `json:"used"`
	Expired int `json:"expired"`
	Active  int `json:"active"`
}

InvitationStats représente la répartition des invitations.

type RegistrationDay

type RegistrationDay struct {
	Day   string `json:"day"`
	Count int    `json:"count"`
}

type Row

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

Row encapsule sql.Row avec un Scan tolerant aux valeurs temporelles.

func (*Row) Scan

func (r *Row) Scan(dest ...interface{}) error

Scan lit la ligne unique avec adaptation des valeurs temporelles.

type Rows

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

Rows encapsule sql.Rows avec un Scan tolerant aux valeurs temporelles.

func (*Rows) Close

func (r *Rows) Close() error

Close ferme le curseur.

func (*Rows) Err

func (r *Rows) Err() error

Err retourne l'erreur de parcours éventuelle.

func (*Rows) Next

func (r *Rows) Next() bool

Next avance au résultat suivant.

func (*Rows) Scan

func (r *Rows) Scan(dest ...interface{}) error

Scan lit la ligne courante avec adaptation des valeurs temporelles.

type SecurityEvent

type SecurityEvent struct {
	ID        int64  `json:"id"`
	Category  string `json:"category"`
	EventType string `json:"event_type"`
	Severity  string `json:"severity"`
	Actor     string `json:"actor,omitempty"`
	Target    string `json:"target,omitempty"`
	IP        string `json:"ip,omitempty"`
	Message   string `json:"message,omitempty"`
	Metadata  string `json:"metadata,omitempty"`
	Resolved  bool   `json:"resolved"`
	CreatedAt string `json:"created_at"`
}

RegistrationDay représente un point de données pour le graphique d'inscriptions. SecurityEvent represente un evenement securite exploitable par le dashboard.

type Tx

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

Tx encapsule une transaction SQL et applique l'adaptation de dialecte.

func (*Tx) Commit

func (tx *Tx) Commit() error

func (*Tx) Exec

func (tx *Tx) Exec(query string, args ...interface{}) (sql.Result, error)

Exec exécute une requête dans la transaction.

func (*Tx) Query

func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error)

Query exécute une requête SELECT dans la transaction.

func (*Tx) QueryRow

func (tx *Tx) QueryRow(query string, args ...interface{}) *Row

QueryRow exécute une requête SELECT (une ligne) dans la transaction.

func (*Tx) Rollback

func (tx *Tx) Rollback() error

Jump to

Keyboard shortcuts

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