Metadata-Version: 2.4
Name: forge-mvc-settings
Version: 1.0.0rc2
Summary: Forge Settings — paramètres applicatifs persistés en MariaDB (table app_settings), API explicite get_setting/set_setting, SQL visible.
Author: Roger Lequette
License-Expression: LicenseRef-Forge-Proprietary
Project-URL: Homepage, https://github.com/caucrogeGit/Forge
Project-URL: Repository, https://github.com/caucrogeGit/Forge
Project-URL: Documentation, https://forgemvc.com/docs/forge/
Keywords: python,mvc,forge,settings,configuration,mariadb
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: forge-mvc<2,>=1.0.0rc2
Dynamic: license-file

# forge-mvc-settings

Paramètres applicatifs opt-in pour Forge : des réglages d'application persistés
dans MariaDB, en paire clé/valeur typée, avec une API explicite.

Ce paquet évite de tout mettre dans `.env` : ce qui change à l'exécution (nom
d'établissement, durée d'une session, mode maintenance, options pédagogiques)
vit dans une table `app_settings`, lisible et modifiable par l'application.

## Installation

```bash
pip install --pre forge-mvc-settings
```

En développement depuis le dépôt Forge : `pip install -e ./packages/forge-mvc-settings`.

## Mise en place de la table

La table n'est pas créée automatiquement (principe : SQL visible, pas d'écriture
cachée). Le paquet fournit une migration :

```bash
forge settings:init        # copie la migration dans mvc/migrations/
forge migration:apply      # crée la table app_settings
```

## Utilisation

```python
from forge_mvc_settings import get_setting, set_setting

set_setting("etablissement.nom", "Collège Victor Hugo")
set_setting("qcm.session_duration", 30)        # int
set_setting("maintenance", False)              # bool

nom = get_setting("etablissement.nom")          # "Collège Victor Hugo"
duree = get_setting("qcm.session_duration", 20) # 30 (int)
en_maintenance = get_setting("maintenance")     # False (bool)
```

L'API expose `get_setting`, `set_setting`, `get_all_settings`, `delete_setting`,
plus `SettingsError`, `TABLE_NAME`, `SUPPORTED_TYPES` et `CREATE_TABLE_SQL`.

## Périmètre

- Types supportés : `str`, `int`, `bool`, `float` (sérialisés en texte,
  recoercés à la lecture).
- Le cœur de Forge ignore tout des paramètres ; la dépendance va de l'opt-in
  vers le cœur, jamais l'inverse.
- Hors périmètre : cache, secrets chiffrés, paramètres par utilisateur.

Documentation complète : <https://forgemvc.com/docs/forge/>.
