@atlashub/smartstack-cli 1.5.1 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.documentation/css/styles.css +2168 -2168
- package/.documentation/js/app.js +794 -794
- package/config/default-config.json +86 -86
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +88 -88
- package/templates/agents/action.md +36 -36
- package/templates/agents/efcore/conflicts.md +84 -84
- package/templates/agents/efcore/db-deploy.md +51 -51
- package/templates/agents/efcore/db-reset.md +59 -59
- package/templates/agents/efcore/db-seed.md +56 -56
- package/templates/agents/efcore/db-status.md +64 -64
- package/templates/agents/efcore/migration.md +85 -85
- package/templates/agents/efcore/rebase-snapshot.md +62 -62
- package/templates/agents/efcore/scan.md +90 -90
- package/templates/agents/efcore/squash.md +67 -67
- package/templates/agents/explore-codebase.md +65 -65
- package/templates/agents/explore-docs.md +97 -97
- package/templates/agents/fix-grammar.md +49 -49
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +85 -85
- package/templates/agents/gitflow/commit.md +40 -40
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +92 -92
- package/templates/agents/gitflow/init.md +139 -139
- package/templates/agents/gitflow/merge.md +62 -62
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +78 -78
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +61 -61
- package/templates/agents/gitflow/status.md +32 -32
- package/templates/agents/snipper.md +36 -36
- package/templates/agents/websearch.md +46 -46
- package/templates/commands/_resources/formatting-guide.md +124 -124
- package/templates/commands/ai-prompt.md +315 -315
- package/templates/commands/apex/1-analyze.md +100 -100
- package/templates/commands/apex/2-plan.md +145 -145
- package/templates/commands/apex/3-execute.md +171 -171
- package/templates/commands/apex/4-examine.md +116 -116
- package/templates/commands/apex/5-tasks.md +209 -209
- package/templates/commands/apex.md +76 -76
- package/templates/commands/application/create.md +362 -362
- package/templates/commands/application/templates-backend.md +463 -463
- package/templates/commands/application/templates-frontend.md +517 -517
- package/templates/commands/application/templates-i18n.md +478 -478
- package/templates/commands/application/templates-seed.md +362 -362
- package/templates/commands/application.md +303 -303
- package/templates/commands/business-analyse/0-orchestrate.md +640 -640
- package/templates/commands/business-analyse/1-init.md +269 -269
- package/templates/commands/business-analyse/2-discover.md +520 -520
- package/templates/commands/business-analyse/3-analyse.md +408 -408
- package/templates/commands/business-analyse/4-specify.md +598 -598
- package/templates/commands/business-analyse/5-validate.md +326 -326
- package/templates/commands/business-analyse/6-handoff.md +746 -746
- package/templates/commands/business-analyse/7-doc-html.md +602 -602
- package/templates/commands/business-analyse/bug.md +325 -325
- package/templates/commands/business-analyse/change-request.md +368 -368
- package/templates/commands/business-analyse/hotfix.md +200 -200
- package/templates/commands/business-analyse.md +640 -640
- package/templates/commands/controller/create.md +216 -216
- package/templates/commands/controller/postman-templates.md +528 -528
- package/templates/commands/controller/templates.md +600 -600
- package/templates/commands/controller.md +337 -337
- package/templates/commands/create/agent.md +138 -138
- package/templates/commands/create/command.md +166 -166
- package/templates/commands/create/hook.md +234 -234
- package/templates/commands/create/plugin.md +329 -329
- package/templates/commands/create/project.md +507 -507
- package/templates/commands/create/skill.md +199 -199
- package/templates/commands/create.md +220 -220
- package/templates/commands/debug.md +95 -95
- package/templates/commands/documentation/module.md +202 -202
- package/templates/commands/documentation/templates.md +432 -432
- package/templates/commands/documentation.md +190 -190
- package/templates/commands/efcore/_env-check.md +153 -153
- package/templates/commands/efcore/conflicts.md +186 -186
- package/templates/commands/efcore/db-deploy.md +193 -193
- package/templates/commands/efcore/db-reset.md +426 -426
- package/templates/commands/efcore/db-seed.md +326 -326
- package/templates/commands/efcore/db-status.md +226 -226
- package/templates/commands/efcore/migration.md +400 -400
- package/templates/commands/efcore/rebase-snapshot.md +264 -264
- package/templates/commands/efcore/scan.md +198 -198
- package/templates/commands/efcore/squash.md +298 -298
- package/templates/commands/efcore.md +224 -224
- package/templates/commands/epct.md +69 -69
- package/templates/commands/explain.md +186 -186
- package/templates/commands/explore.md +45 -45
- package/templates/commands/feature-full.md +267 -267
- package/templates/commands/gitflow/1-init.md +1038 -1038
- package/templates/commands/gitflow/10-start.md +768 -768
- package/templates/commands/gitflow/11-finish.md +457 -457
- package/templates/commands/gitflow/12-cleanup.md +276 -276
- package/templates/commands/gitflow/13-sync.md +216 -216
- package/templates/commands/gitflow/14-rebase.md +251 -251
- package/templates/commands/gitflow/2-status.md +277 -277
- package/templates/commands/gitflow/3-commit.md +344 -344
- package/templates/commands/gitflow/4-plan.md +145 -145
- package/templates/commands/gitflow/5-exec.md +147 -147
- package/templates/commands/gitflow/6-abort.md +344 -344
- package/templates/commands/gitflow/7-pull-request.md +453 -355
- package/templates/commands/gitflow/8-review.md +240 -176
- package/templates/commands/gitflow/9-merge.md +451 -365
- package/templates/commands/gitflow.md +128 -128
- package/templates/commands/implement.md +663 -663
- package/templates/commands/init.md +567 -567
- package/templates/commands/mcp-integration.md +330 -330
- package/templates/commands/notification.md +129 -129
- package/templates/commands/oneshot.md +57 -57
- package/templates/commands/quick-search.md +72 -72
- package/templates/commands/ralph-loop/cancel-ralph.md +18 -18
- package/templates/commands/ralph-loop/help.md +126 -126
- package/templates/commands/ralph-loop/ralph-loop.md +18 -18
- package/templates/commands/review.md +106 -106
- package/templates/commands/utils/test-web-config.md +160 -160
- package/templates/commands/utils/test-web.md +151 -151
- package/templates/commands/validate.md +233 -233
- package/templates/commands/workflow.md +193 -193
- package/templates/gitflow/config.json +138 -138
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +25 -25
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/skills/ai-prompt/SKILL.md +778 -778
- package/templates/skills/application/SKILL.md +563 -563
- package/templates/skills/application/templates-backend.md +450 -450
- package/templates/skills/application/templates-frontend.md +531 -531
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +647 -647
- package/templates/skills/business-analyse/SKILL.md +191 -191
- package/templates/skills/business-analyse/questionnaire.md +283 -283
- package/templates/skills/business-analyse/templates-frd.md +477 -477
- package/templates/skills/business-analyse/templates-react.md +580 -580
- package/templates/skills/controller/SKILL.md +240 -240
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/templates.md +1468 -1468
- package/templates/skills/documentation/SKILL.md +133 -133
- package/templates/skills/documentation/templates.md +476 -476
- package/templates/skills/feature-full/SKILL.md +838 -838
- package/templates/skills/notification/SKILL.md +555 -555
- package/templates/skills/ui-components/SKILL.md +870 -870
- package/templates/skills/workflow/SKILL.md +582 -582
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,426 +1,426 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Completely reset database (Drop + Recreate + Migrations)
|
|
3
|
-
agent: efcore-db-reset
|
|
4
|
-
model: sonnet
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# EF Core Database Reset
|
|
8
|
-
|
|
9
|
-
Drops and recreates the database, then applies all migrations using EF Core CLI only.
|
|
10
|
-
|
|
11
|
-
**WARNING: This command DELETES all data!**
|
|
12
|
-
|
|
13
|
-
> **CLAUDE INSTRUCTION:** The `AskUserQuestion({...})` blocks are instructions to use the `AskUserQuestion` tool in an **interactive** manner. You MUST execute the tool with these parameters to get the user's response BEFORE continuing.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## RÈGLES DE CONFORMITÉ (OBLIGATOIRE)
|
|
18
|
-
|
|
19
|
-
> **INTERDIT - Violations CLAUDE.md:**
|
|
20
|
-
> - ❌ Utilisation de `sqlcmd` avec SQL brut
|
|
21
|
-
> - ❌ Scripts SQL (.sql files) dans le repository
|
|
22
|
-
> - ❌ Commandes SQL directes pour backup/restore
|
|
23
|
-
>
|
|
24
|
-
> **OBLIGATOIRE - Méthodes autorisées:**
|
|
25
|
-
> - ✅ `dotnet ef database drop` pour supprimer
|
|
26
|
-
> - ✅ `dotnet ef database update` pour recréer
|
|
27
|
-
> - ✅ Backup via outils externes (SQL Server Management Studio, Azure)
|
|
28
|
-
>
|
|
29
|
-
> **Contact support:** support@atlshub.ch
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## STEP 0: Verification environnement et connexion (CRITIQUE)
|
|
34
|
-
|
|
35
|
-
> **Include:** `_env-check.md` - TOUTES les etapes car commande destructive
|
|
36
|
-
|
|
37
|
-
### 0.1 Detecter les fichiers appsettings
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Scanner les fichiers appsettings
|
|
41
|
-
API_DIR=$(find . -type d -name "*.Api" | head -1)
|
|
42
|
-
[ -z "$API_DIR" ] && API_DIR="src/SmartStack.Api"
|
|
43
|
-
|
|
44
|
-
echo "FICHIERS APPSETTINGS DISPONIBLES:"
|
|
45
|
-
find "$API_DIR" -maxdepth 1 -name "appsettings*.json" 2>/dev/null | while read f; do
|
|
46
|
-
echo " - $(basename $f)"
|
|
47
|
-
done
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 0.2 Selectionner l'environnement
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Priorite: --env flag > appsettings.Local.json > erreur
|
|
54
|
-
ENV_FLAG="${1#--env=}"
|
|
55
|
-
|
|
56
|
-
if [ -n "$ENV_FLAG" ] && [ "$ENV_FLAG" != "$1" ]; then
|
|
57
|
-
SELECTED_ENV="appsettings.${ENV_FLAG}.json"
|
|
58
|
-
elif [ -f "$API_DIR/appsettings.Local.json" ]; then
|
|
59
|
-
SELECTED_ENV="appsettings.Local.json"
|
|
60
|
-
else
|
|
61
|
-
echo "ERROR: Aucun fichier appsettings trouve"
|
|
62
|
-
echo " Creez appsettings.Local.json ou utilisez --env {Environment}"
|
|
63
|
-
exit 1
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
echo ""
|
|
67
|
-
echo "ENVIRONNEMENT SELECTIONNE: $SELECTED_ENV"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### 0.3 Extraire et afficher la connexion
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# Extraire connection string
|
|
74
|
-
CONNECTION_STRING=$(powershell -Command "
|
|
75
|
-
\$json = Get-Content '$API_DIR/$SELECTED_ENV' | ConvertFrom-Json
|
|
76
|
-
\$json.ConnectionStrings.DefaultConnection
|
|
77
|
-
")
|
|
78
|
-
|
|
79
|
-
DATABASE_NAME=$(echo "$CONNECTION_STRING" | grep -oP 'Database=\K[^;]+')
|
|
80
|
-
SERVER_NAME=$(echo "$CONNECTION_STRING" | grep -oP 'Server=\K[^;]+')
|
|
81
|
-
CONNECTION_MASKED=$(echo "$CONNECTION_STRING" | sed 's/Password=[^;]*/Password=****/g')
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 0.4 Afficher le WARNING avec details de la base
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
================================================================================
|
|
88
|
-
EF CORE - DATABASE RESET (OPERATION DESTRUCTIVE)
|
|
89
|
-
================================================================================
|
|
90
|
-
|
|
91
|
-
ENVIRONNEMENT: {SELECTED_ENV}
|
|
92
|
-
|
|
93
|
-
BASE DE DONNEES QUI SERA SUPPRIMEE:
|
|
94
|
-
Server: {SERVER_NAME}
|
|
95
|
-
Database: {DATABASE_NAME}
|
|
96
|
-
String: {CONNECTION_MASKED}
|
|
97
|
-
|
|
98
|
-
================================================================================
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### 0.5 Protection Production (BLOQUANT)
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Bloquer si Production detecte
|
|
105
|
-
if [[ "$SELECTED_ENV" == *"Production"* ]]; then
|
|
106
|
-
echo "================================================================================
|
|
107
|
-
BLOQUE - ENVIRONNEMENT PRODUCTION
|
|
108
|
-
================================================================================
|
|
109
|
-
|
|
110
|
-
ERREUR: Reset interdit en environnement Production
|
|
111
|
-
|
|
112
|
-
Cette commande est bloquee pour proteger les donnees de production.
|
|
113
|
-
|
|
114
|
-
OPTIONS:
|
|
115
|
-
1. Utilisez appsettings.Local.json (defaut, recommande)
|
|
116
|
-
2. Utilisez --env Development ou --env Staging
|
|
117
|
-
|
|
118
|
-
Contact: support@atlshub.ch
|
|
119
|
-
|
|
120
|
-
================================================================================"
|
|
121
|
-
exit 1
|
|
122
|
-
fi
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## STEP 1: Confirmation obligatoire (avec nom de la base)
|
|
128
|
-
|
|
129
|
-
> **CRITIQUE:** L'utilisateur doit voir exactement quelle base sera supprimee.
|
|
130
|
-
|
|
131
|
-
```javascript
|
|
132
|
-
AskUserQuestion({
|
|
133
|
-
questions: [{
|
|
134
|
-
question: "DANGER: Supprimer DEFINITIVEMENT la base '" + DATABASE_NAME + "' sur " + SERVER_NAME + "? TOUTES LES DONNEES SERONT PERDUES!",
|
|
135
|
-
header: "Reset DB",
|
|
136
|
-
options: [
|
|
137
|
-
{ label: "Oui, supprimer " + DATABASE_NAME, description: "Drop + Recreate (DATA LOSS IRREVERSIBLE)" },
|
|
138
|
-
{ label: "Non, annuler", description: "Conserver la base actuelle" }
|
|
139
|
-
],
|
|
140
|
-
multiSelect: false
|
|
141
|
-
}]
|
|
142
|
-
})
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
**If No → Stop immediately**
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## STEP 2: Detecter les projets EF Core
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# Detect EF Core projects
|
|
153
|
-
STARTUP_PROJECT=$(find . -name "*.Api.csproj" -o -name "*Web.csproj" | head -1)
|
|
154
|
-
INFRA_PROJECT=$(find . -name "*Infrastructure.csproj" | head -1)
|
|
155
|
-
|
|
156
|
-
if [ -z "$INFRA_PROJECT" ]; then
|
|
157
|
-
INFRA_PROJECT=$(find . -name "*.csproj" -exec grep -l "Microsoft.EntityFrameworkCore" {} \; | head -1)
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
echo "Startup project: $STARTUP_PROJECT"
|
|
161
|
-
echo "Infrastructure project: $INFRA_PROJECT"
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## STEP 3: Backup recommendation
|
|
167
|
-
|
|
168
|
-
```javascript
|
|
169
|
-
AskUserQuestion({
|
|
170
|
-
questions: [{
|
|
171
|
-
question: "Do you need to backup data before deletion?",
|
|
172
|
-
header: "Backup",
|
|
173
|
-
options: [
|
|
174
|
-
{ label: "No backup needed", description: "Development data only - proceed" },
|
|
175
|
-
{ label: "Manual backup first", description: "I'll backup via SSMS/Azure Portal" }
|
|
176
|
-
],
|
|
177
|
-
multiSelect: false
|
|
178
|
-
}]
|
|
179
|
-
})
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
**If manual backup:**
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
================================================================================
|
|
186
|
-
BACKUP INSTRUCTIONS
|
|
187
|
-
================================================================================
|
|
188
|
-
|
|
189
|
-
Pour sauvegarder votre base de données AVANT le reset:
|
|
190
|
-
|
|
191
|
-
OPTION 1 - SQL Server Management Studio (SSMS):
|
|
192
|
-
1. Connectez-vous à votre serveur
|
|
193
|
-
2. Clic droit sur la DB → Tasks → Back Up...
|
|
194
|
-
3. Sélectionnez destination et lancez
|
|
195
|
-
|
|
196
|
-
OPTION 2 - Azure Portal (si Azure SQL):
|
|
197
|
-
1. Azure Portal → Votre DB → Export
|
|
198
|
-
2. Configurez le storage account
|
|
199
|
-
3. Lancez l'export
|
|
200
|
-
|
|
201
|
-
OPTION 3 - Azure Data Studio:
|
|
202
|
-
1. Connectez-vous → Clic droit DB → Backup
|
|
203
|
-
|
|
204
|
-
Une fois le backup effectué, relancez /efcore:db-reset
|
|
205
|
-
|
|
206
|
-
================================================================================
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
**Stop and wait for user to complete backup manually**
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## STEP 4: Check migration state BEFORE drop
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
echo "Checking migration state..."
|
|
217
|
-
|
|
218
|
-
# List migrations in codebase
|
|
219
|
-
CODE_MIGRATIONS=$(dotnet ef migrations list \
|
|
220
|
-
--project "$INFRA_PROJECT" \
|
|
221
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
222
|
-
--no-build 2>/dev/null | grep -E "^[0-9]{14}_" | wc -l)
|
|
223
|
-
|
|
224
|
-
echo " Migrations in codebase: $CODE_MIGRATIONS"
|
|
225
|
-
|
|
226
|
-
# Try to get applied migrations from database (may fail if DB doesn't exist)
|
|
227
|
-
APPLIED_MIGRATIONS=$(dotnet ef migrations list \
|
|
228
|
-
--project "$INFRA_PROJECT" \
|
|
229
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
230
|
-
--no-build 2>/dev/null | grep -E "^\s*[0-9]{14}_.*\(Applied\)" | wc -l)
|
|
231
|
-
|
|
232
|
-
echo " Migrations applied in DB: $APPLIED_MIGRATIONS"
|
|
233
|
-
|
|
234
|
-
# List migration names for display
|
|
235
|
-
echo ""
|
|
236
|
-
echo "Migrations in codebase:"
|
|
237
|
-
dotnet ef migrations list \
|
|
238
|
-
--project "$INFRA_PROJECT" \
|
|
239
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
240
|
-
--no-build 2>/dev/null | grep -E "^[0-9]{14}_" | head -20
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## STEP 5: Confirm migration reset strategy
|
|
246
|
-
|
|
247
|
-
> **IMPORTANT:** If migrations were squashed (fewer migrations in code than previously applied),
|
|
248
|
-
> applying all migrations will create a fresh database with the NEW migration history.
|
|
249
|
-
|
|
250
|
-
```javascript
|
|
251
|
-
AskUserQuestion({
|
|
252
|
-
questions: [{
|
|
253
|
-
question: "How should we handle migrations after database reset?",
|
|
254
|
-
header: "Migrations",
|
|
255
|
-
options: [
|
|
256
|
-
{ label: "Apply current migrations", description: "Use migrations currently in codebase (recommended after squash)" },
|
|
257
|
-
{ label: "Cancel reset", description: "Stop and review migration state first" }
|
|
258
|
-
],
|
|
259
|
-
multiSelect: false
|
|
260
|
-
}]
|
|
261
|
-
})
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**If "Cancel reset" → Stop immediately and suggest:**
|
|
265
|
-
|
|
266
|
-
```
|
|
267
|
-
================================================================================
|
|
268
|
-
RESET CANCELLED - REVIEW MIGRATIONS
|
|
269
|
-
================================================================================
|
|
270
|
-
|
|
271
|
-
Pour vérifier l'état des migrations:
|
|
272
|
-
|
|
273
|
-
/efcore:db-status → Voir les migrations appliquées vs disponibles
|
|
274
|
-
/efcore:scan → Scanner les migrations sur toutes les branches
|
|
275
|
-
|
|
276
|
-
Si des migrations ont été squashées:
|
|
277
|
-
- Les anciennes migrations n'existent plus dans le code
|
|
278
|
-
- Le reset appliquera uniquement les nouvelles migrations
|
|
279
|
-
- C'est le comportement ATTENDU après un squash
|
|
280
|
-
|
|
281
|
-
Si vous voulez restaurer d'anciennes migrations:
|
|
282
|
-
- Vérifiez l'historique git: git log --oneline -- "**/Migrations/"
|
|
283
|
-
- Restaurez les fichiers: git checkout <commit> -- path/to/Migrations/
|
|
284
|
-
|
|
285
|
-
================================================================================
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## STEP 6: Drop database
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
echo "Dropping database..."
|
|
294
|
-
|
|
295
|
-
# Use EF Core CLI only (NO sqlcmd)
|
|
296
|
-
dotnet ef database drop \
|
|
297
|
-
--project "$INFRA_PROJECT" \
|
|
298
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
299
|
-
--force
|
|
300
|
-
|
|
301
|
-
if [ $? -eq 0 ]; then
|
|
302
|
-
echo " Database dropped successfully"
|
|
303
|
-
else
|
|
304
|
-
echo " WARNING: Drop command returned error (database may not exist)"
|
|
305
|
-
fi
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## STEP 7: Recreate and apply migrations
|
|
311
|
-
|
|
312
|
-
```bash
|
|
313
|
-
echo "Applying all migrations..."
|
|
314
|
-
|
|
315
|
-
# Apply all migrations (creates database if missing)
|
|
316
|
-
dotnet ef database update \
|
|
317
|
-
--project "$INFRA_PROJECT" \
|
|
318
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
319
|
-
--verbose
|
|
320
|
-
|
|
321
|
-
if [ $? -ne 0 ]; then
|
|
322
|
-
echo "ERROR: Failed to apply migrations"
|
|
323
|
-
exit 1
|
|
324
|
-
fi
|
|
325
|
-
|
|
326
|
-
echo " Database recreated with all migrations"
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
## STEP 8: Optional seed
|
|
332
|
-
|
|
333
|
-
```javascript
|
|
334
|
-
AskUserQuestion({
|
|
335
|
-
questions: [{
|
|
336
|
-
question: "Populate database with test data (via HasData)?",
|
|
337
|
-
header: "Seed",
|
|
338
|
-
options: [
|
|
339
|
-
{ label: "Yes (recommended)", description: "Apply HasData seed from migrations" },
|
|
340
|
-
{ label: "No", description: "Empty database" }
|
|
341
|
-
],
|
|
342
|
-
multiSelect: false
|
|
343
|
-
}]
|
|
344
|
-
})
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
**If yes:**
|
|
348
|
-
|
|
349
|
-
```bash
|
|
350
|
-
# HasData is already applied via migrations
|
|
351
|
-
# If additional seeding needed, use Seeder class
|
|
352
|
-
if grep -rq "IDataSeeder\|class.*Seeder" . --include="*.cs" 2>/dev/null; then
|
|
353
|
-
echo "Executing DataSeeder..."
|
|
354
|
-
dotnet run --project "$STARTUP_PROJECT" -- --seed
|
|
355
|
-
else
|
|
356
|
-
echo " HasData() seed already applied via migrations"
|
|
357
|
-
fi
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
---
|
|
361
|
-
|
|
362
|
-
## STEP 9: Verification
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
echo "Verifying database..."
|
|
366
|
-
|
|
367
|
-
# Check migrations status
|
|
368
|
-
dotnet ef migrations list \
|
|
369
|
-
--project "$INFRA_PROJECT" \
|
|
370
|
-
--startup-project "$STARTUP_PROJECT" \
|
|
371
|
-
--no-build 2>/dev/null | tail -10
|
|
372
|
-
|
|
373
|
-
echo ""
|
|
374
|
-
echo " Use /efcore:db-status for detailed status"
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
## STEP 10: Summary
|
|
380
|
-
|
|
381
|
-
```
|
|
382
|
-
================================================================================
|
|
383
|
-
DATABASE RESET COMPLETE
|
|
384
|
-
================================================================================
|
|
385
|
-
|
|
386
|
-
✓ Old database deleted (via dotnet ef database drop)
|
|
387
|
-
✓ New database created (via dotnet ef database update)
|
|
388
|
-
✓ All migrations applied
|
|
389
|
-
{✓ HasData seed applied | ○ Empty database}
|
|
390
|
-
|
|
391
|
-
COMPLIANT: ✓ EF Core CLI only (no raw SQL)
|
|
392
|
-
|
|
393
|
-
NEXT COMMANDS:
|
|
394
|
-
/efcore:db-status → Check status
|
|
395
|
-
/efcore:db-seed → Additional seeding (if needed)
|
|
396
|
-
dotnet run → Launch application
|
|
397
|
-
|
|
398
|
-
================================================================================
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
## Options
|
|
404
|
-
|
|
405
|
-
| Option | Description |
|
|
406
|
-
|--------|-------------|
|
|
407
|
-
| `--env {name}` | Utiliser appsettings.{name}.json (ex: --env Development) |
|
|
408
|
-
|
|
409
|
-
## Security
|
|
410
|
-
|
|
411
|
-
| Protection | Description |
|
|
412
|
-
|------------|-------------|
|
|
413
|
-
| Env Display | Affiche la base de donnees AVANT confirmation |
|
|
414
|
-
| Confirmation | Demande explicite avec le NOM de la base |
|
|
415
|
-
| Production Block | Bloque si appsettings.Production.json detecte |
|
|
416
|
-
| Migration Check | Displays migration state and asks before applying |
|
|
417
|
-
| EF Core Only | No raw SQL commands - uses dotnet ef CLI |
|
|
418
|
-
| Manual Backup | User directed to SSMS/Azure for backups |
|
|
419
|
-
|
|
420
|
-
---
|
|
421
|
-
|
|
422
|
-
## Support
|
|
423
|
-
|
|
424
|
-
> **Questions ou problèmes avec le reset EF Core?**
|
|
425
|
-
>
|
|
426
|
-
> 📧 **support@atlshub.ch**
|
|
1
|
+
---
|
|
2
|
+
description: Completely reset database (Drop + Recreate + Migrations)
|
|
3
|
+
agent: efcore-db-reset
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# EF Core Database Reset
|
|
8
|
+
|
|
9
|
+
Drops and recreates the database, then applies all migrations using EF Core CLI only.
|
|
10
|
+
|
|
11
|
+
**WARNING: This command DELETES all data!**
|
|
12
|
+
|
|
13
|
+
> **CLAUDE INSTRUCTION:** The `AskUserQuestion({...})` blocks are instructions to use the `AskUserQuestion` tool in an **interactive** manner. You MUST execute the tool with these parameters to get the user's response BEFORE continuing.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## RÈGLES DE CONFORMITÉ (OBLIGATOIRE)
|
|
18
|
+
|
|
19
|
+
> **INTERDIT - Violations CLAUDE.md:**
|
|
20
|
+
> - ❌ Utilisation de `sqlcmd` avec SQL brut
|
|
21
|
+
> - ❌ Scripts SQL (.sql files) dans le repository
|
|
22
|
+
> - ❌ Commandes SQL directes pour backup/restore
|
|
23
|
+
>
|
|
24
|
+
> **OBLIGATOIRE - Méthodes autorisées:**
|
|
25
|
+
> - ✅ `dotnet ef database drop` pour supprimer
|
|
26
|
+
> - ✅ `dotnet ef database update` pour recréer
|
|
27
|
+
> - ✅ Backup via outils externes (SQL Server Management Studio, Azure)
|
|
28
|
+
>
|
|
29
|
+
> **Contact support:** support@atlshub.ch
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## STEP 0: Verification environnement et connexion (CRITIQUE)
|
|
34
|
+
|
|
35
|
+
> **Include:** `_env-check.md` - TOUTES les etapes car commande destructive
|
|
36
|
+
|
|
37
|
+
### 0.1 Detecter les fichiers appsettings
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Scanner les fichiers appsettings
|
|
41
|
+
API_DIR=$(find . -type d -name "*.Api" | head -1)
|
|
42
|
+
[ -z "$API_DIR" ] && API_DIR="src/SmartStack.Api"
|
|
43
|
+
|
|
44
|
+
echo "FICHIERS APPSETTINGS DISPONIBLES:"
|
|
45
|
+
find "$API_DIR" -maxdepth 1 -name "appsettings*.json" 2>/dev/null | while read f; do
|
|
46
|
+
echo " - $(basename $f)"
|
|
47
|
+
done
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 0.2 Selectionner l'environnement
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Priorite: --env flag > appsettings.Local.json > erreur
|
|
54
|
+
ENV_FLAG="${1#--env=}"
|
|
55
|
+
|
|
56
|
+
if [ -n "$ENV_FLAG" ] && [ "$ENV_FLAG" != "$1" ]; then
|
|
57
|
+
SELECTED_ENV="appsettings.${ENV_FLAG}.json"
|
|
58
|
+
elif [ -f "$API_DIR/appsettings.Local.json" ]; then
|
|
59
|
+
SELECTED_ENV="appsettings.Local.json"
|
|
60
|
+
else
|
|
61
|
+
echo "ERROR: Aucun fichier appsettings trouve"
|
|
62
|
+
echo " Creez appsettings.Local.json ou utilisez --env {Environment}"
|
|
63
|
+
exit 1
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
echo ""
|
|
67
|
+
echo "ENVIRONNEMENT SELECTIONNE: $SELECTED_ENV"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 0.3 Extraire et afficher la connexion
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Extraire connection string
|
|
74
|
+
CONNECTION_STRING=$(powershell -Command "
|
|
75
|
+
\$json = Get-Content '$API_DIR/$SELECTED_ENV' | ConvertFrom-Json
|
|
76
|
+
\$json.ConnectionStrings.DefaultConnection
|
|
77
|
+
")
|
|
78
|
+
|
|
79
|
+
DATABASE_NAME=$(echo "$CONNECTION_STRING" | grep -oP 'Database=\K[^;]+')
|
|
80
|
+
SERVER_NAME=$(echo "$CONNECTION_STRING" | grep -oP 'Server=\K[^;]+')
|
|
81
|
+
CONNECTION_MASKED=$(echo "$CONNECTION_STRING" | sed 's/Password=[^;]*/Password=****/g')
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 0.4 Afficher le WARNING avec details de la base
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
================================================================================
|
|
88
|
+
EF CORE - DATABASE RESET (OPERATION DESTRUCTIVE)
|
|
89
|
+
================================================================================
|
|
90
|
+
|
|
91
|
+
ENVIRONNEMENT: {SELECTED_ENV}
|
|
92
|
+
|
|
93
|
+
BASE DE DONNEES QUI SERA SUPPRIMEE:
|
|
94
|
+
Server: {SERVER_NAME}
|
|
95
|
+
Database: {DATABASE_NAME}
|
|
96
|
+
String: {CONNECTION_MASKED}
|
|
97
|
+
|
|
98
|
+
================================================================================
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 0.5 Protection Production (BLOQUANT)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Bloquer si Production detecte
|
|
105
|
+
if [[ "$SELECTED_ENV" == *"Production"* ]]; then
|
|
106
|
+
echo "================================================================================
|
|
107
|
+
BLOQUE - ENVIRONNEMENT PRODUCTION
|
|
108
|
+
================================================================================
|
|
109
|
+
|
|
110
|
+
ERREUR: Reset interdit en environnement Production
|
|
111
|
+
|
|
112
|
+
Cette commande est bloquee pour proteger les donnees de production.
|
|
113
|
+
|
|
114
|
+
OPTIONS:
|
|
115
|
+
1. Utilisez appsettings.Local.json (defaut, recommande)
|
|
116
|
+
2. Utilisez --env Development ou --env Staging
|
|
117
|
+
|
|
118
|
+
Contact: support@atlshub.ch
|
|
119
|
+
|
|
120
|
+
================================================================================"
|
|
121
|
+
exit 1
|
|
122
|
+
fi
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## STEP 1: Confirmation obligatoire (avec nom de la base)
|
|
128
|
+
|
|
129
|
+
> **CRITIQUE:** L'utilisateur doit voir exactement quelle base sera supprimee.
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
AskUserQuestion({
|
|
133
|
+
questions: [{
|
|
134
|
+
question: "DANGER: Supprimer DEFINITIVEMENT la base '" + DATABASE_NAME + "' sur " + SERVER_NAME + "? TOUTES LES DONNEES SERONT PERDUES!",
|
|
135
|
+
header: "Reset DB",
|
|
136
|
+
options: [
|
|
137
|
+
{ label: "Oui, supprimer " + DATABASE_NAME, description: "Drop + Recreate (DATA LOSS IRREVERSIBLE)" },
|
|
138
|
+
{ label: "Non, annuler", description: "Conserver la base actuelle" }
|
|
139
|
+
],
|
|
140
|
+
multiSelect: false
|
|
141
|
+
}]
|
|
142
|
+
})
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**If No → Stop immediately**
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## STEP 2: Detecter les projets EF Core
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Detect EF Core projects
|
|
153
|
+
STARTUP_PROJECT=$(find . -name "*.Api.csproj" -o -name "*Web.csproj" | head -1)
|
|
154
|
+
INFRA_PROJECT=$(find . -name "*Infrastructure.csproj" | head -1)
|
|
155
|
+
|
|
156
|
+
if [ -z "$INFRA_PROJECT" ]; then
|
|
157
|
+
INFRA_PROJECT=$(find . -name "*.csproj" -exec grep -l "Microsoft.EntityFrameworkCore" {} \; | head -1)
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
echo "Startup project: $STARTUP_PROJECT"
|
|
161
|
+
echo "Infrastructure project: $INFRA_PROJECT"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## STEP 3: Backup recommendation
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
AskUserQuestion({
|
|
170
|
+
questions: [{
|
|
171
|
+
question: "Do you need to backup data before deletion?",
|
|
172
|
+
header: "Backup",
|
|
173
|
+
options: [
|
|
174
|
+
{ label: "No backup needed", description: "Development data only - proceed" },
|
|
175
|
+
{ label: "Manual backup first", description: "I'll backup via SSMS/Azure Portal" }
|
|
176
|
+
],
|
|
177
|
+
multiSelect: false
|
|
178
|
+
}]
|
|
179
|
+
})
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**If manual backup:**
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
================================================================================
|
|
186
|
+
BACKUP INSTRUCTIONS
|
|
187
|
+
================================================================================
|
|
188
|
+
|
|
189
|
+
Pour sauvegarder votre base de données AVANT le reset:
|
|
190
|
+
|
|
191
|
+
OPTION 1 - SQL Server Management Studio (SSMS):
|
|
192
|
+
1. Connectez-vous à votre serveur
|
|
193
|
+
2. Clic droit sur la DB → Tasks → Back Up...
|
|
194
|
+
3. Sélectionnez destination et lancez
|
|
195
|
+
|
|
196
|
+
OPTION 2 - Azure Portal (si Azure SQL):
|
|
197
|
+
1. Azure Portal → Votre DB → Export
|
|
198
|
+
2. Configurez le storage account
|
|
199
|
+
3. Lancez l'export
|
|
200
|
+
|
|
201
|
+
OPTION 3 - Azure Data Studio:
|
|
202
|
+
1. Connectez-vous → Clic droit DB → Backup
|
|
203
|
+
|
|
204
|
+
Une fois le backup effectué, relancez /efcore:db-reset
|
|
205
|
+
|
|
206
|
+
================================================================================
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Stop and wait for user to complete backup manually**
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## STEP 4: Check migration state BEFORE drop
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
echo "Checking migration state..."
|
|
217
|
+
|
|
218
|
+
# List migrations in codebase
|
|
219
|
+
CODE_MIGRATIONS=$(dotnet ef migrations list \
|
|
220
|
+
--project "$INFRA_PROJECT" \
|
|
221
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
222
|
+
--no-build 2>/dev/null | grep -E "^[0-9]{14}_" | wc -l)
|
|
223
|
+
|
|
224
|
+
echo " Migrations in codebase: $CODE_MIGRATIONS"
|
|
225
|
+
|
|
226
|
+
# Try to get applied migrations from database (may fail if DB doesn't exist)
|
|
227
|
+
APPLIED_MIGRATIONS=$(dotnet ef migrations list \
|
|
228
|
+
--project "$INFRA_PROJECT" \
|
|
229
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
230
|
+
--no-build 2>/dev/null | grep -E "^\s*[0-9]{14}_.*\(Applied\)" | wc -l)
|
|
231
|
+
|
|
232
|
+
echo " Migrations applied in DB: $APPLIED_MIGRATIONS"
|
|
233
|
+
|
|
234
|
+
# List migration names for display
|
|
235
|
+
echo ""
|
|
236
|
+
echo "Migrations in codebase:"
|
|
237
|
+
dotnet ef migrations list \
|
|
238
|
+
--project "$INFRA_PROJECT" \
|
|
239
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
240
|
+
--no-build 2>/dev/null | grep -E "^[0-9]{14}_" | head -20
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## STEP 5: Confirm migration reset strategy
|
|
246
|
+
|
|
247
|
+
> **IMPORTANT:** If migrations were squashed (fewer migrations in code than previously applied),
|
|
248
|
+
> applying all migrations will create a fresh database with the NEW migration history.
|
|
249
|
+
|
|
250
|
+
```javascript
|
|
251
|
+
AskUserQuestion({
|
|
252
|
+
questions: [{
|
|
253
|
+
question: "How should we handle migrations after database reset?",
|
|
254
|
+
header: "Migrations",
|
|
255
|
+
options: [
|
|
256
|
+
{ label: "Apply current migrations", description: "Use migrations currently in codebase (recommended after squash)" },
|
|
257
|
+
{ label: "Cancel reset", description: "Stop and review migration state first" }
|
|
258
|
+
],
|
|
259
|
+
multiSelect: false
|
|
260
|
+
}]
|
|
261
|
+
})
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**If "Cancel reset" → Stop immediately and suggest:**
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
================================================================================
|
|
268
|
+
RESET CANCELLED - REVIEW MIGRATIONS
|
|
269
|
+
================================================================================
|
|
270
|
+
|
|
271
|
+
Pour vérifier l'état des migrations:
|
|
272
|
+
|
|
273
|
+
/efcore:db-status → Voir les migrations appliquées vs disponibles
|
|
274
|
+
/efcore:scan → Scanner les migrations sur toutes les branches
|
|
275
|
+
|
|
276
|
+
Si des migrations ont été squashées:
|
|
277
|
+
- Les anciennes migrations n'existent plus dans le code
|
|
278
|
+
- Le reset appliquera uniquement les nouvelles migrations
|
|
279
|
+
- C'est le comportement ATTENDU après un squash
|
|
280
|
+
|
|
281
|
+
Si vous voulez restaurer d'anciennes migrations:
|
|
282
|
+
- Vérifiez l'historique git: git log --oneline -- "**/Migrations/"
|
|
283
|
+
- Restaurez les fichiers: git checkout <commit> -- path/to/Migrations/
|
|
284
|
+
|
|
285
|
+
================================================================================
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## STEP 6: Drop database
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
echo "Dropping database..."
|
|
294
|
+
|
|
295
|
+
# Use EF Core CLI only (NO sqlcmd)
|
|
296
|
+
dotnet ef database drop \
|
|
297
|
+
--project "$INFRA_PROJECT" \
|
|
298
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
299
|
+
--force
|
|
300
|
+
|
|
301
|
+
if [ $? -eq 0 ]; then
|
|
302
|
+
echo " Database dropped successfully"
|
|
303
|
+
else
|
|
304
|
+
echo " WARNING: Drop command returned error (database may not exist)"
|
|
305
|
+
fi
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## STEP 7: Recreate and apply migrations
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
echo "Applying all migrations..."
|
|
314
|
+
|
|
315
|
+
# Apply all migrations (creates database if missing)
|
|
316
|
+
dotnet ef database update \
|
|
317
|
+
--project "$INFRA_PROJECT" \
|
|
318
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
319
|
+
--verbose
|
|
320
|
+
|
|
321
|
+
if [ $? -ne 0 ]; then
|
|
322
|
+
echo "ERROR: Failed to apply migrations"
|
|
323
|
+
exit 1
|
|
324
|
+
fi
|
|
325
|
+
|
|
326
|
+
echo " Database recreated with all migrations"
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## STEP 8: Optional seed
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
AskUserQuestion({
|
|
335
|
+
questions: [{
|
|
336
|
+
question: "Populate database with test data (via HasData)?",
|
|
337
|
+
header: "Seed",
|
|
338
|
+
options: [
|
|
339
|
+
{ label: "Yes (recommended)", description: "Apply HasData seed from migrations" },
|
|
340
|
+
{ label: "No", description: "Empty database" }
|
|
341
|
+
],
|
|
342
|
+
multiSelect: false
|
|
343
|
+
}]
|
|
344
|
+
})
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**If yes:**
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# HasData is already applied via migrations
|
|
351
|
+
# If additional seeding needed, use Seeder class
|
|
352
|
+
if grep -rq "IDataSeeder\|class.*Seeder" . --include="*.cs" 2>/dev/null; then
|
|
353
|
+
echo "Executing DataSeeder..."
|
|
354
|
+
dotnet run --project "$STARTUP_PROJECT" -- --seed
|
|
355
|
+
else
|
|
356
|
+
echo " HasData() seed already applied via migrations"
|
|
357
|
+
fi
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## STEP 9: Verification
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
echo "Verifying database..."
|
|
366
|
+
|
|
367
|
+
# Check migrations status
|
|
368
|
+
dotnet ef migrations list \
|
|
369
|
+
--project "$INFRA_PROJECT" \
|
|
370
|
+
--startup-project "$STARTUP_PROJECT" \
|
|
371
|
+
--no-build 2>/dev/null | tail -10
|
|
372
|
+
|
|
373
|
+
echo ""
|
|
374
|
+
echo " Use /efcore:db-status for detailed status"
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## STEP 10: Summary
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
================================================================================
|
|
383
|
+
DATABASE RESET COMPLETE
|
|
384
|
+
================================================================================
|
|
385
|
+
|
|
386
|
+
✓ Old database deleted (via dotnet ef database drop)
|
|
387
|
+
✓ New database created (via dotnet ef database update)
|
|
388
|
+
✓ All migrations applied
|
|
389
|
+
{✓ HasData seed applied | ○ Empty database}
|
|
390
|
+
|
|
391
|
+
COMPLIANT: ✓ EF Core CLI only (no raw SQL)
|
|
392
|
+
|
|
393
|
+
NEXT COMMANDS:
|
|
394
|
+
/efcore:db-status → Check status
|
|
395
|
+
/efcore:db-seed → Additional seeding (if needed)
|
|
396
|
+
dotnet run → Launch application
|
|
397
|
+
|
|
398
|
+
================================================================================
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Options
|
|
404
|
+
|
|
405
|
+
| Option | Description |
|
|
406
|
+
|--------|-------------|
|
|
407
|
+
| `--env {name}` | Utiliser appsettings.{name}.json (ex: --env Development) |
|
|
408
|
+
|
|
409
|
+
## Security
|
|
410
|
+
|
|
411
|
+
| Protection | Description |
|
|
412
|
+
|------------|-------------|
|
|
413
|
+
| Env Display | Affiche la base de donnees AVANT confirmation |
|
|
414
|
+
| Confirmation | Demande explicite avec le NOM de la base |
|
|
415
|
+
| Production Block | Bloque si appsettings.Production.json detecte |
|
|
416
|
+
| Migration Check | Displays migration state and asks before applying |
|
|
417
|
+
| EF Core Only | No raw SQL commands - uses dotnet ef CLI |
|
|
418
|
+
| Manual Backup | User directed to SSMS/Azure for backups |
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Support
|
|
423
|
+
|
|
424
|
+
> **Questions ou problèmes avec le reset EF Core?**
|
|
425
|
+
>
|
|
426
|
+
> 📧 **support@atlshub.ch**
|