feat(sync): harden the Hiboutik sync, share rate limits across instances, update dependencies (#4)

This commit is contained in:
2026-11-08 13:45:08 +00:00
parent 04960379e8
commit d07c4df52d
62 changed files with 1546 additions and 639 deletions

View File

@@ -130,7 +130,7 @@ model Customer {
updatedAt DateTime @updatedAt
dateOfBirth DateTime?
/// Kept when removed in Hiboutik (an empty Hiboutik email does not erase it)
/// Null when the customer has no email in Hiboutik (erased when removed there)
email String?
firstName String
hiboutikId Int @unique
@@ -227,3 +227,19 @@ model OrderLine {
@@map("order_lines")
}
/// Rate limiting counter shared by every instance (ThrottlerDatabaseStorage): one fixed window per throttler key
/// (route + client IP). Not synced from Hiboutik. Rows whose window and block are over are purged regularly.
model ThrottlerRecord {
/// Key generated by the ThrottlerGuard (hash of route, throttler name and client IP)
key String @id
/// Requests counted in the current window
hits Int
/// End of the current window
expiresAt DateTime @db.Timestamptz(3)
/// End of the block once the limit was exceeded, null when not blocked
blockedUntil DateTime? @db.Timestamptz(3)
@@index([expiresAt])
@@map("throttler_records")
}