Metadata-Version: 2.4
Name: forge-mvc-mssql
Version: 1.0.0rc2
Summary: Forge SQL Server — backend BDD Microsoft SQL Server pour Forge (pyodbc), découvert par le cœur via entry point (ADR-054). Statut Alpha : logique de dialecte testée, intégration serveur à valider.
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,sqlserver,mssql,database,backend
Classifier: Development Status :: 3 - Alpha
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
Requires-Dist: pyodbc<6,>=5.0
Dynamic: license-file

# forge-mvc-mssql

Backend BDD **Microsoft SQL Server** pour [Forge](https://forgemvc.com), au-dessus
de `pyodbc`.

Depuis l'ADR-054, le cœur de Forge est agnostique BDD : il découvre le backend
installé via un entry point. Ce paquet ajoute **SQL Server** à la liste des
choix de SGBD du développeur.

!!! warning "Statut Alpha"
    La logique de dialecte (types, DDL Transact-SQL) est **testée
    unitairement**. L'**intégration avec un serveur SQL Server** (pilote ODBC)
    et le **provisioning par la CLI** (`forge db:init`) restent à
    valider/câbler. À ce stade, créez le schéma manuellement (voir plus bas).

## Installation

```bash
pip install forge-mvc forge-mvc-mssql
```

SQL Server est **client-serveur** : un serveur SQL Server doit être joignable
(installé, en conteneur `mcr.microsoft.com/mssql/server`, ou distant), et un
**pilote ODBC** doit être présent sur la machine cliente (par défaut
« ODBC Driver 18 for SQL Server », surchargeable via `DB_ODBC_DRIVER`).

## Particularités gérées

- **Paramètres** : pyodbc utilise nativement les `?` de Forge (aucune traduction).
- **Identité** : clé primaire auto-incrémentée via `BIGINT IDENTITY(1,1)`.
- **Insertion** : `lastrowid` via `SCOPE_IDENTITY()`.
- **Identifiants** : entre crochets `[...]`.
- **Idempotence** : SQL Server n'a pas `IF NOT EXISTS` ; le dialecte émet des
  formes gardées (`IF OBJECT_ID(...) IS NULL` pour les tables, `IF NOT EXISTS
  (SELECT ... FROM sys.indexes ...)` pour les index).
- **Lignes-dict** : pyodbc ne renvoie pas de dictionnaires ; l'adaptateur
  convertit via `cursor.description`.

## Configuration

Connexion via l'environnement (`DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_APP_LOGIN`,
`DB_APP_PWD`, et `DB_ODBC_DRIVER` au besoin). Un seul backend BDD par projet.

## Limites connues (Alpha)

- `forge db:init` ne provisionne pas encore SQL Server : créez la base et le
  login/utilisateur à la main, puis appliquez le SQL des entités généré par
  `make:crud`.
- L'introspection de diff compare des noms de types SQL Server : le suivi
  incrémental de schéma peut être imparfait.

## Licence

Propriétaire (voir `LICENSE`). Trajectoire MIT visée à la version 1.0.0 stable.
