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
- type AuthSessionConfig
- type DB
- func (db *DB) Begin() (*Tx, error)
- func (db *DB) Close() error
- func (db *DB) Conn() *sql.DB
- func (db *DB) DeleteClosedInvitations(now time.Time) (int64, error)
- func (db *DB) Driver() string
- func (db *DB) Exec(query string, args ...interface{}) (sql.Result, error)
- func (db *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *DB) GetAllSettings() (map[string]string, error)
- func (db *DB) GetAuthSessionConfig() (AuthSessionConfig, error)
- func (db *DB) GetBackupConfig() (config.BackupConfig, error)
- func (db *DB) GetBackupLastRun() string
- func (db *DB) GetConfig() config.DatabaseConfig
- func (db *DB) GetDefaultLang() string
- func (db *DB) GetEmailTemplatesConfig() (config.EmailTemplatesConfig, error)
- func (db *DB) GetEmailTemplatesConfigByLanguage() (map[string]config.EmailTemplatesConfig, error)
- func (db *DB) GetEmailTemplatesConfigForLang(lang string) (config.EmailTemplatesConfig, string, error)
- func (db *DB) GetEmailTemplatesMultilingualEnabled() bool
- func (db *DB) GetGroupPolicyMappings() ([]config.GroupPolicyMapping, error)
- func (db *DB) GetInvitationProfileConfig() (config.InvitationProfileConfig, error)
- func (db *DB) GetInvitationStats() (InvitationStats, error)
- func (db *DB) GetJellyfinPolicyPresets() ([]config.JellyfinPolicyPreset, error)
- func (db *DB) GetLDAPConfig() (config.LDAPConfig, error)
- func (db *DB) GetPortalLinksConfig() (config.PortalLinksConfig, error)
- func (db *DB) GetProductFeaturesConfig() (config.ProductFeaturesConfig, error)
- func (db *DB) GetRegistrationHistory(days int) ([]RegistrationDay, error)
- func (db *DB) GetSMTPConfig() (config.SMTPConfig, error)
- func (db *DB) GetSetting(key string) (string, error)
- func (db *DB) GetWebhooksConfig() (config.WebhooksConfig, error)
- func (db *DB) IsLDAPEnabled() bool
- func (db *DB) IsPostgres() bool
- func (db *DB) IsSQLite() bool
- func (db *DB) LogAction(action, actor, target, details string) error
- func (db *DB) LogSecurityEvent(event SecurityEvent) error
- func (db *DB) Path() string
- func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
- func (db *DB) QueryRow(query string, args ...interface{}) *Row
- func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row
- func (db *DB) RevokeAuthSessionsBefore(timestamp int64) (AuthSessionConfig, error)
- func (db *DB) SaveAuthSessionConfig(cfg AuthSessionConfig) error
- func (db *DB) SaveBackupConfig(cfg config.BackupConfig) error
- func (db *DB) SaveEmailTemplatesConfig(cfg config.EmailTemplatesConfig) error
- func (db *DB) SaveEmailTemplatesConfigByLanguage(values map[string]config.EmailTemplatesConfig) error
- func (db *DB) SaveEmailTemplatesConfigForLang(lang string, cfg config.EmailTemplatesConfig) error
- func (db *DB) SaveGroupPolicyMappings(mappings []config.GroupPolicyMapping) error
- func (db *DB) SaveInvitationProfileConfig(cfg config.InvitationProfileConfig) error
- func (db *DB) SaveJellyfinPolicyPresets(presets []config.JellyfinPolicyPreset) error
- func (db *DB) SaveLDAPConfig(cfg config.LDAPConfig) error
- func (db *DB) SavePortalLinksConfig(cfg config.PortalLinksConfig) error
- func (db *DB) SaveProductFeaturesConfig(cfg config.ProductFeaturesConfig) error
- func (db *DB) SaveSMTPConfig(cfg config.SMTPConfig) error
- func (db *DB) SaveWebhooksConfig(cfg config.WebhooksConfig) error
- func (db *DB) SetBackupLastRun(day string) error
- func (db *DB) SetEmailTemplatesMultilingualEnabled(enabled bool) error
- func (db *DB) SetSetting(key, value string) error
- type InvitationStats
- type RegistrationDay
- type Row
- type Rows
- type SecurityEvent
- type Tx
Constants ¶
const ( DialectSQLite = "sqlite" DialectPostgres = "postgres" )
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) DeleteClosedInvitations ¶
DeleteClosedInvitations supprime les invitations expirées ou qui ont atteint leur quota.
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
IsLDAPEnabled vérifie rapidement si l'intégration LDAP est activée.
func (*DB) IsPostgres ¶
func (*DB) LogSecurityEvent ¶
func (db *DB) LogSecurityEvent(event SecurityEvent) error
LogSecurityEvent enregistre un evenement securite structure.
func (*DB) QueryRowContext ¶
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 ¶
SetBackupLastRun enregistre la date locale YYYY-MM-DD du dernier backup auto.
func (*DB) SetEmailTemplatesMultilingualEnabled ¶
SetEmailTemplatesMultilingualEnabled active ou desactive la selection de langue des templates sans supprimer les traductions deja stockees.
func (*DB) SetSetting ¶
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 Row ¶
type Row struct {
// contains filtered or unexported fields
}
Row encapsule sql.Row avec un Scan tolerant aux valeurs temporelles.
type Rows ¶
type Rows struct {
// contains filtered or unexported fields
}
Rows encapsule sql.Rows avec un Scan tolerant aux 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.