Spaces:
Sleeping
Sleeping
MichaelEdou Claude Opus 4.6 commited on
Commit ·
5ba5ed4
1
Parent(s): a653be3
Fix branch list to only the 20 accurate ICC branches
Browse filesRemoves all incorrect/extra branches on startup and seeds only
the verified list. Any branch not in the authoritative list is
deleted automatically.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- packages/server/src/db/index.ts +23 -42
packages/server/src/db/index.ts
CHANGED
|
@@ -85,64 +85,45 @@ sqlite.exec(`
|
|
| 85 |
);
|
| 86 |
`);
|
| 87 |
|
| 88 |
-
//
|
| 89 |
const now = new Date().toISOString();
|
| 90 |
-
const seedBranches = sqlite.prepare(
|
| 91 |
-
'INSERT OR IGNORE INTO branch_config (email, branch, active, updated_at) VALUES (?, ?, 1, ?)'
|
| 92 |
-
);
|
| 93 |
const branchSeeds: [string, string][] = [
|
| 94 |
['finances@iccameriques.org', 'ICC Montréal'],
|
| 95 |
-
['
|
| 96 |
-
['
|
| 97 |
-
['
|
| 98 |
['trois-rivieres.finances@iccameriques.org', 'ICC Trois-Rivières'],
|
| 99 |
['sherbrooke.finances@iccameriques.org', 'ICC Sherbrooke'],
|
| 100 |
-
['gatineau.finances@iccameriques.org', 'ICC Gatineau'],
|
| 101 |
-
['ottawa.finances@iccameriques.org', 'ICC Ottawa'],
|
| 102 |
-
['gatineauottawa.finances@iccameriques.org', 'ICC Gatineau-Ottawa'],
|
| 103 |
['toronto.finances@iccameriques.org', 'ICC Toronto'],
|
| 104 |
-
['
|
| 105 |
-
['london.finances@iccameriques.org', 'ICC London'],
|
| 106 |
-
['windsor.finances@iccameriques.org', 'ICC Windsor'],
|
| 107 |
-
['sudbury.finances@iccameriques.org', 'ICC Sudbury'],
|
| 108 |
-
['timmins.finances@iccameriques.org', 'ICC Timmins'],
|
| 109 |
-
['winnipeg.finances@iccameriques.org', 'ICC Winnipeg'],
|
| 110 |
-
['regina.finances@iccameriques.org', 'ICC Regina'],
|
| 111 |
-
['saskatoon.finances@iccameriques.org', 'ICC Saskatoon'],
|
| 112 |
-
['calgary.finances@iccameriques.org', 'ICC Calgary'],
|
| 113 |
-
['edmonton.finances@iccameriques.org', 'ICC Edmonton'],
|
| 114 |
-
['vancouver.finances@iccameriques.org', 'ICC Vancouver'],
|
| 115 |
-
['victoria.finances@iccameriques.org', 'ICC Victoria'],
|
| 116 |
-
['halifax.finances@iccameriques.org', 'ICC Halifax'],
|
| 117 |
-
['moncton.finances@iccameriques.org', 'ICC Moncton'],
|
| 118 |
-
['charlottetown.finances@iccameriques.org', 'ICC Charlottetown'],
|
| 119 |
-
['stjohns.finances@iccameriques.org', "ICC St. John's"],
|
| 120 |
['lvl.finances@iccameriques.org', 'ICC Laval'],
|
| 121 |
['lgl.finances@iccameriques.org', 'ICC Longueuil'],
|
| 122 |
['victoriaville.finances@iccameriques.org', 'ICC Victoriaville'],
|
| 123 |
['valleyfield.finances@iccameriques.org', 'ICC Valleyfield'],
|
| 124 |
['finances.rdl@iccameriques.org', 'ICC Rivière-du-Loup'],
|
| 125 |
-
['
|
| 126 |
-
['septiles.finances@iccameriques.org', 'ICC Sept-Îles'],
|
| 127 |
-
['saguenay.finances@iccameriques.org', 'ICC Saguenay'],
|
| 128 |
-
['chibougamau.finances@iccameriques.org', 'ICC Chibougamau'],
|
| 129 |
-
['valdor.finances@iccameriques.org', "ICC Val-d'Or"],
|
| 130 |
-
['rouyn.finances@iccameriques.org', 'ICC Rouyn-Noranda'],
|
| 131 |
['kingston.finances@iccameriques.org', 'ICC Kingston'],
|
|
|
|
|
|
|
| 132 |
['shawinigan.finances@iccameriques.org', 'ICC Shawinigan'],
|
| 133 |
-
['
|
| 134 |
-
['
|
| 135 |
-
['sthyacinthe.finances@iccameriques.org', 'ICC St-Hyacinthe'],
|
| 136 |
-
['stjerome.finances@iccameriques.org', 'ICC St-Jérôme'],
|
| 137 |
-
['joliette.finances@iccameriques.org', 'ICC Joliette'],
|
| 138 |
-
['terrebonne.finances@iccameriques.org', 'ICC Terrebonne'],
|
| 139 |
-
['repentigny.finances@iccameriques.org', 'ICC Repentigny'],
|
| 140 |
-
['siege@iccameriques.org', 'ICC Siège'],
|
| 141 |
-
['mission.finances@iccameriques.org', 'ICC Mission'],
|
| 142 |
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
const seedTx = sqlite.transaction(() => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
for (const [email, branch] of branchSeeds) {
|
| 145 |
-
|
| 146 |
}
|
| 147 |
});
|
| 148 |
seedTx();
|
|
|
|
| 85 |
);
|
| 86 |
`);
|
| 87 |
|
| 88 |
+
// Authoritative branch list — only these 20 branches should exist
|
| 89 |
const now = new Date().toISOString();
|
|
|
|
|
|
|
|
|
|
| 90 |
const branchSeeds: [string, string][] = [
|
| 91 |
['finances@iccameriques.org', 'ICC Montréal'],
|
| 92 |
+
['gatineauottawa.finances@iccameriques.org', 'ICC Gatineau-Ottawa'],
|
| 93 |
+
['moncton.finances@iccameriques.org', 'ICC Moncton'],
|
| 94 |
+
['chibougamau.finances@iccameriques.org', 'ICC Chibougamau'],
|
| 95 |
['trois-rivieres.finances@iccameriques.org', 'ICC Trois-Rivières'],
|
| 96 |
['sherbrooke.finances@iccameriques.org', 'ICC Sherbrooke'],
|
|
|
|
|
|
|
|
|
|
| 97 |
['toronto.finances@iccameriques.org', 'ICC Toronto'],
|
| 98 |
+
['quebec.finances@iccameriques.org', 'ICC Québec'],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
['lvl.finances@iccameriques.org', 'ICC Laval'],
|
| 100 |
['lgl.finances@iccameriques.org', 'ICC Longueuil'],
|
| 101 |
['victoriaville.finances@iccameriques.org', 'ICC Victoriaville'],
|
| 102 |
['valleyfield.finances@iccameriques.org', 'ICC Valleyfield'],
|
| 103 |
['finances.rdl@iccameriques.org', 'ICC Rivière-du-Loup'],
|
| 104 |
+
['ottawa.finances@iccameriques.org', 'ICC Ottawa'],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
['kingston.finances@iccameriques.org', 'ICC Kingston'],
|
| 106 |
+
['hamilton.finances@iccameriques.org', 'ICC Hamilton'],
|
| 107 |
+
['edmonton.finances@iccameriques.org', 'ICC Edmonton'],
|
| 108 |
['shawinigan.finances@iccameriques.org', 'ICC Shawinigan'],
|
| 109 |
+
['timmins.finances@iccameriques.org', 'ICC Timmins'],
|
| 110 |
+
['sudbury.finances@iccameriques.org', 'ICC Sudbury'],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
];
|
| 112 |
+
const seedEmails = new Set(branchSeeds.map(([e]) => e));
|
| 113 |
+
// Remove any branches not in the authoritative list
|
| 114 |
+
const allBranches = sqlite.prepare('SELECT id, email FROM branch_config').all() as { id: number; email: string }[];
|
| 115 |
+
const deleteBranch = sqlite.prepare('DELETE FROM branch_config WHERE id = ?');
|
| 116 |
+
const insertBranch = sqlite.prepare(
|
| 117 |
+
'INSERT OR IGNORE INTO branch_config (email, branch, active, updated_at) VALUES (?, ?, 1, ?)'
|
| 118 |
+
);
|
| 119 |
const seedTx = sqlite.transaction(() => {
|
| 120 |
+
for (const row of allBranches) {
|
| 121 |
+
if (!seedEmails.has(row.email)) {
|
| 122 |
+
deleteBranch.run(row.id);
|
| 123 |
+
}
|
| 124 |
+
}
|
| 125 |
for (const [email, branch] of branchSeeds) {
|
| 126 |
+
insertBranch.run(email, branch, now);
|
| 127 |
}
|
| 128 |
});
|
| 129 |
seedTx();
|