diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-12-10 18:46:42 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-12-10 18:46:42 +0100 |
| commit | 6e350f8921a7979304d42e878ddc63aa9987bb7e (patch) | |
| tree | 7dbbd73523a8a2e4cdfc0d7758f02bb03c5111d1 | |
| parent | 523fe267880d0eeb96b78fac4e5db4142a7db1dc (diff) | |
Ensure idempotency for the seeding of other domain entities.
| -rw-r--r-- | db/seed.rkt | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/db/seed.rkt b/db/seed.rkt index 8500a4b..3c3f018 100644 --- a/db/seed.rkt +++ b/db/seed.rkt @@ -86,11 +86,12 @@ (define n (get-nutrient #:formula formula)) (define v (string->number (cdr crop-requirement))) (values n v))) - (cond - [(non-empty-string? crop-name) - (define crop (get-crop #:name crop-name)) - (create-crop-requirement! profile nutrient-values crop)] - [else (create-crop-requirement! profile nutrient-values)])) + (unless (get-crop-requirement #:profile profile) + (cond + [(non-empty-string? crop-name) + (define crop (get-crop #:name crop-name)) + (create-crop-requirement! profile nutrient-values crop)] + [else (create-crop-requirement! profile nutrient-values)]))) (with-tx (csv-for-each row->seed! next-row))) (define (seed-initial-crop-rotation!) @@ -111,7 +112,8 @@ (define n (get-nutrient #:formula (car fertilizer-component))) (define v (string->number (cdr fertilizer-component))) (values n v))) - (create-fertilizer-product! canonical-name brand-name nutrient-values)) + (unless (get-fertilizer-product #:canonical-name canonical-name) + (create-fertilizer-product! canonical-name brand-name nutrient-values))) (with-tx (csv-for-each row->seed! next-row))) (module+ test |