summaryrefslogtreecommitdiff
path: root/src/FundLab.Api
diff options
context:
space:
mode:
Diffstat (limited to 'src/FundLab.Api')
-rw-r--r--src/FundLab.Api/App.fs7
-rw-r--r--src/FundLab.Api/Persistence.fs8
2 files changed, 14 insertions, 1 deletions
diff --git a/src/FundLab.Api/App.fs b/src/FundLab.Api/App.fs
index ac4c174..4ae00de 100644
--- a/src/FundLab.Api/App.fs
+++ b/src/FundLab.Api/App.fs
@@ -544,7 +544,12 @@ module App =
| Some code, Some percentText ->
match tryDecimal "targetPercent" percentText with
| Ok percent ->
- let targetRow: RebalancePolicy.TargetAllocation = { InstrumentCode = code; TargetPercent = percent }
+ let targetRow: RebalancePolicy.TargetAllocation =
+ {
+ RebalancePolicy.TargetAllocation.InstrumentCode = code
+ TargetPercent = percent
+ }
+
rows.Add(targetRow)
| Error message -> failure <- Some message
| _ -> failure <- Some "each target needs instrumentCode and targetPercent"
diff --git a/src/FundLab.Api/Persistence.fs b/src/FundLab.Api/Persistence.fs
index d64fe98..6c0374a 100644
--- a/src/FundLab.Api/Persistence.fs
+++ b/src/FundLab.Api/Persistence.fs
@@ -612,6 +612,14 @@ type FundRepository(connectionString: string) =
created_at timestamptz NOT NULL DEFAULT now()
);
+ CREATE TABLE IF NOT EXISTS rebalance_idempotencies (
+ idempotency_key text PRIMARY KEY,
+ request_hash text NOT NULL,
+ plan_id uuid NOT NULL REFERENCES rebalance_plans(id),
+ fund_id uuid NOT NULL REFERENCES funds(id),
+ created_at timestamptz NOT NULL DEFAULT now()
+ );
+
CREATE TABLE IF NOT EXISTS rebalance_targets (
plan_id uuid NOT NULL REFERENCES rebalance_plans(id),
instrument_code text NOT NULL REFERENCES instruments(code),