mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-20 05:28:22 +02:00
fix(rust) : lire les colonnes timestamp que la production déclare en timestamptz
Au démarrage, la configuration météo était illisible (« Rust type Option<NaiveDateTime> (as SQL type TIMESTAMP) is not compatible with SQL type TIMESTAMPTZ ») et /api/weather/current renvoyait 500 : weather_settings.created_at est timestamptz en production alors que shared/schema.ts et init.sql le déclarent timestamp. Les types réels de la production ne figurent dans aucune migration du dépôt : plutôt que de deviner colonne par colonne, chaque colonne timestamp des structures générées est lue par crate::db::AnyTimestamp(Opt), qui accepte timestamp et timestamptz (rendu en UTC). Le champ reste NaiveDateTime et la sérialisation (crate::json::ts, « …Z ») ne change pas. scripts/gen-rust-schema.ts émet le même attribut #[sqlx(try_from)] ; schema.rs est modifié à l'identique (62 colonnes). Non compilé : pas de chaîne Rust sur ce poste. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c869d7aa08
commit
4ed129bd74
3 files changed
+163
-2
No files matched your search
@@ -178,6 +178,11 @@ async function main() {
|
||||
const attributes: string[] = [];
|
||||
const field = RUST_KEYWORDS.has(column.name) ? `${column.name}_` : column.name;
|
||||
if (field !== column.name) attributes.push(`#[sqlx(rename = "${column.name}")]`);
|
||||
// timestamp dans shared/schema.ts, mais parfois timestamptz en production
|
||||
// (tables créées hors des migrations du dépôt) : lu dans les deux cas
|
||||
if (base === "NaiveDateTime") {
|
||||
attributes.push(`#[sqlx(try_from = "${nullable ? "crate::db::AnyTimestampOpt" : "crate::db::AnyTimestamp"}")]`);
|
||||
}
|
||||
const serde = [`rename = "${column.jsKey}"`];
|
||||
if (base === "NaiveDateTime") serde.push(`serialize_with = "${nullable ? "crate::json::ts_opt" : "crate::json::ts"}"`);
|
||||
if (base === "Decimal") {
|
||||
|
||||
Reference in new issue
Block a user