@morpho-dev/router 0.1.18 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +29 -19
  2. package/dist/chunk-jass6xSI.mjs +13 -0
  3. package/dist/cli.js +6574 -6194
  4. package/dist/drizzle/migrations/0000_setup_single_migration_folder.sql +204 -0
  5. package/dist/drizzle/migrations/0001_add-trigger-for-consumed-events.sql +58 -0
  6. package/dist/drizzle/migrations/0002_insert-status-code.sql +1 -0
  7. package/dist/drizzle/migrations/0003_update-triggers-for-consumed-events.sql +3 -0
  8. package/dist/drizzle/migrations/0004_drop-status-offers-foreign-key-constraint.sql +1 -0
  9. package/dist/drizzle/migrations/0005_add-index-to-boost-group-query-and-offer-hash.sql +1 -0
  10. package/dist/drizzle/migrations/0006_add-callbacks-and-positions-relations.sql +37 -0
  11. package/dist/drizzle/migrations/0008_validation.sql +15 -0
  12. package/dist/drizzle/migrations/0009_add-transfers-table.sql +14 -0
  13. package/dist/drizzle/migrations/0010_add-price.sql +1 -0
  14. package/dist/drizzle/migrations/0011_nullable-callback-amount.sql +1 -0
  15. package/dist/drizzle/migrations/0012_add-position-asset.sql +1 -0
  16. package/dist/drizzle/migrations/0013_remove-depecrated-domains.sql +13 -0
  17. package/dist/drizzle/migrations/0014_rename-offers-v2-into-offers.sql +23 -0
  18. package/dist/drizzle/{router_v1.4 → migrations}/meta/0000_snapshot.json +858 -78
  19. package/dist/drizzle/migrations/meta/0001_snapshot.json +1752 -0
  20. package/dist/drizzle/migrations/meta/0002_snapshot.json +1752 -0
  21. package/dist/drizzle/migrations/meta/0003_snapshot.json +1752 -0
  22. package/dist/drizzle/{router_v1.4/meta/0001_snapshot.json → migrations/meta/0004_snapshot.json} +848 -78
  23. package/dist/drizzle/migrations/meta/0005_snapshot.json +1775 -0
  24. package/dist/drizzle/migrations/meta/0006_snapshot.json +1973 -0
  25. package/dist/drizzle/migrations/meta/0008_snapshot.json +1955 -0
  26. package/dist/drizzle/migrations/meta/0009_snapshot.json +2078 -0
  27. package/dist/drizzle/migrations/meta/0010_snapshot.json +2084 -0
  28. package/dist/drizzle/migrations/meta/0013_snapshot.json +1290 -0
  29. package/dist/drizzle/migrations/meta/0014_snapshot.json +1290 -0
  30. package/dist/drizzle/migrations/meta/_journal.json +104 -0
  31. package/dist/index.browser.d.mts +2794 -0
  32. package/dist/index.browser.d.mts.map +1 -0
  33. package/dist/index.browser.d.ts +2290 -1172
  34. package/dist/index.browser.d.ts.map +1 -0
  35. package/dist/index.browser.js +3820 -2519
  36. package/dist/index.browser.js.map +1 -1
  37. package/dist/index.browser.mjs +3615 -2467
  38. package/dist/index.browser.mjs.map +1 -1
  39. package/dist/index.node.d.mts +4987 -0
  40. package/dist/index.node.d.mts.map +1 -0
  41. package/dist/index.node.d.ts +4423 -2906
  42. package/dist/index.node.d.ts.map +1 -0
  43. package/dist/index.node.js +7810 -6141
  44. package/dist/index.node.js.map +1 -1
  45. package/dist/index.node.mjs +7556 -6102
  46. package/dist/index.node.mjs.map +1 -1
  47. package/package.json +29 -15
  48. package/dist/cli.js.map +0 -1
  49. package/dist/drizzle/router_v1.4/0000_add_obligation_id.sql +0 -112
  50. package/dist/drizzle/router_v1.4/0001_update-primary-key-on-link.sql +0 -3
  51. package/dist/drizzle/router_v1.4/meta/_journal.json +0 -20
  52. package/dist/index.browser.d.cts +0 -1675
  53. package/dist/index.node.d.cts +0 -3471
@@ -0,0 +1,204 @@
1
+ CREATE TYPE "router_v1.6"."status_code" AS ENUM('VALID', 'NOT_ENOUGH_LIQUIDITY');--> statement-breakpoint
2
+ CREATE TABLE "router_v1.6"."chains" (
3
+ "chain_id" bigint NOT NULL,
4
+ "block_number" bigint NOT NULL,
5
+ "epoch" numeric(78, 0) DEFAULT '0' NOT NULL,
6
+ "updated_at" timestamp DEFAULT now() NOT NULL
7
+ );
8
+ --> statement-breakpoint
9
+ CREATE TABLE "router_v1.6"."collectors" (
10
+ "chain_id" bigint NOT NULL,
11
+ "name" text NOT NULL,
12
+ "block_number" bigint NOT NULL,
13
+ "epoch" numeric(78, 0) DEFAULT '0' NOT NULL,
14
+ "updated_at" timestamp DEFAULT now() NOT NULL
15
+ );
16
+ --> statement-breakpoint
17
+ CREATE TABLE "router_v1.6"."consumed_per_user_and_nonce" (
18
+ "id" varchar(255) PRIMARY KEY NOT NULL,
19
+ "chain_id" bigint NOT NULL,
20
+ "offering" varchar(42) NOT NULL,
21
+ "nonce" bigint NOT NULL,
22
+ "consumed" numeric(78, 0) NOT NULL,
23
+ "block_number" bigint NOT NULL,
24
+ "created_at" timestamp DEFAULT now() NOT NULL
25
+ );
26
+ --> statement-breakpoint
27
+ CREATE TABLE "router_v1.6"."consumed_events" (
28
+ "event_id" varchar(128) PRIMARY KEY NOT NULL,
29
+ "chain_id" bigint NOT NULL,
30
+ "maker" varchar(42) NOT NULL,
31
+ "group" varchar(66) NOT NULL,
32
+ "amount" numeric(78, 0) NOT NULL,
33
+ "block_number" bigint NOT NULL,
34
+ "created_at" timestamp DEFAULT now() NOT NULL
35
+ );
36
+ --> statement-breakpoint
37
+ CREATE TABLE "router_v1.6"."groups" (
38
+ "chain_id" bigint NOT NULL,
39
+ "maker" varchar(42) NOT NULL,
40
+ "group" varchar(66) NOT NULL,
41
+ "consumed" numeric(78, 0) NOT NULL,
42
+ "block_number" bigint NOT NULL,
43
+ "updated_at" timestamp DEFAULT now() NOT NULL,
44
+ CONSTRAINT "groups_pk" PRIMARY KEY("chain_id","maker","group")
45
+ );
46
+ --> statement-breakpoint
47
+ CREATE TABLE "router_v1.6"."liquidity_links" (
48
+ "parent_pool_id" varchar(255) NOT NULL,
49
+ "child_pool_id" varchar(255) NOT NULL,
50
+ "priority" integer NOT NULL,
51
+ "block_number" bigint NOT NULL,
52
+ "updated_at" timestamp DEFAULT now() NOT NULL,
53
+ CONSTRAINT "liquidity_links_pk" PRIMARY KEY("parent_pool_id","priority")
54
+ );
55
+ --> statement-breakpoint
56
+ CREATE TABLE "router_v1.6"."liquidity_pools" (
57
+ "id" varchar(255) PRIMARY KEY NOT NULL,
58
+ "amount" numeric(78, 0) NOT NULL,
59
+ "block_number" bigint NOT NULL,
60
+ "updated_at" timestamp DEFAULT now() NOT NULL
61
+ );
62
+ --> statement-breakpoint
63
+ CREATE TABLE "router_v1.6"."obligation_collaterals" (
64
+ "obligation_id" varchar(66) NOT NULL,
65
+ "asset" varchar(42) NOT NULL,
66
+ "oracle" varchar(42) NOT NULL,
67
+ "lltv" bigint NOT NULL,
68
+ CONSTRAINT "obligation_collaterals_pk" PRIMARY KEY("obligation_id","asset")
69
+ );
70
+ --> statement-breakpoint
71
+ CREATE TABLE "router_v1.6"."obligation_collaterals_v2" (
72
+ "obligation_id" varchar(66) NOT NULL,
73
+ "asset" varchar(42) NOT NULL,
74
+ "oracle_chain_id" bigint NOT NULL,
75
+ "oracle_address" varchar(42) NOT NULL,
76
+ "lltv" bigint NOT NULL,
77
+ "block_number" bigint NOT NULL,
78
+ "updated_at" timestamp DEFAULT now() NOT NULL,
79
+ CONSTRAINT "obligation_collaterals_v2_pk" PRIMARY KEY("obligation_id","asset")
80
+ );
81
+ --> statement-breakpoint
82
+ CREATE TABLE "router_v1.6"."obligations" (
83
+ "obligation_id" varchar(66) PRIMARY KEY NOT NULL,
84
+ "chain_id" bigint NOT NULL,
85
+ "loan_token" varchar(42) NOT NULL,
86
+ "maturity" integer NOT NULL
87
+ );
88
+ --> statement-breakpoint
89
+ CREATE TABLE "router_v1.6"."offer_liquidity_pools" (
90
+ "offer_hash" varchar(66) NOT NULL,
91
+ "pool_id" varchar(255) NOT NULL,
92
+ "amount" numeric(78, 0) NOT NULL,
93
+ "block_number" bigint NOT NULL,
94
+ "updated_at" timestamp DEFAULT now() NOT NULL,
95
+ CONSTRAINT "offer_liquidity_pools_pk" PRIMARY KEY("offer_hash","pool_id")
96
+ );
97
+ --> statement-breakpoint
98
+ CREATE TABLE "router_v1.6"."offer_status" (
99
+ "offer_hash" varchar(66) PRIMARY KEY NOT NULL,
100
+ "status_id" serial NOT NULL,
101
+ "block_number" bigint NOT NULL,
102
+ "updated_at" timestamp DEFAULT now() NOT NULL
103
+ );
104
+ --> statement-breakpoint
105
+ CREATE TABLE "router_v1.6"."offers" (
106
+ "hash" varchar(66) PRIMARY KEY NOT NULL,
107
+ "obligation_id" varchar(66) NOT NULL,
108
+ "offering" varchar(42) NOT NULL,
109
+ "assets" numeric(78, 0) NOT NULL,
110
+ "rate" bigint NOT NULL,
111
+ "maturity" integer NOT NULL,
112
+ "expiry" integer NOT NULL,
113
+ "start" integer NOT NULL,
114
+ "nonce" bigint NOT NULL,
115
+ "buy" boolean NOT NULL,
116
+ "chain_id" bigint NOT NULL,
117
+ "loan_token" varchar(42) NOT NULL,
118
+ "callback_address" varchar(42) NOT NULL,
119
+ "callback_data" text NOT NULL,
120
+ "callback_gas_limit" bigint NOT NULL,
121
+ "signature" varchar(132),
122
+ "created_at" timestamp DEFAULT now() NOT NULL,
123
+ "block_number" bigint NOT NULL
124
+ );
125
+ --> statement-breakpoint
126
+ CREATE TABLE "router_v1.6"."offers_v2" (
127
+ "hash" varchar(66) PRIMARY KEY NOT NULL,
128
+ "obligation_id" varchar(66) NOT NULL,
129
+ "assets" numeric(78, 0) NOT NULL,
130
+ "rate" numeric(78, 0) NOT NULL,
131
+ "maturity" integer NOT NULL,
132
+ "expiry" integer NOT NULL,
133
+ "start" integer NOT NULL,
134
+ "group_chain_id" bigint NOT NULL,
135
+ "group_maker" varchar(42) NOT NULL,
136
+ "group_group" varchar(66) NOT NULL,
137
+ "nonce" varchar(66) NOT NULL,
138
+ "buy" boolean NOT NULL,
139
+ "callback_address" varchar(42) NOT NULL,
140
+ "callback_data" text NOT NULL,
141
+ "block_number" bigint NOT NULL,
142
+ "updated_at" timestamp DEFAULT now() NOT NULL
143
+ );
144
+ --> statement-breakpoint
145
+ CREATE TABLE "router_v1.6"."oracles" (
146
+ "chain_id" bigint NOT NULL,
147
+ "address" varchar(42) NOT NULL,
148
+ "block_number" bigint NOT NULL,
149
+ "updated_at" timestamp DEFAULT now() NOT NULL,
150
+ CONSTRAINT "oracles_pk" PRIMARY KEY("chain_id","address")
151
+ );
152
+ --> statement-breakpoint
153
+ CREATE TABLE "router_v1.6"."status" (
154
+ "id" serial PRIMARY KEY NOT NULL,
155
+ "code" "router_v1.6"."status_code",
156
+ CONSTRAINT "status_code_unique" UNIQUE("code")
157
+ );
158
+ --> statement-breakpoint
159
+ ALTER TABLE "router_v1.6"."consumed_events" ADD CONSTRAINT "consumed_events_groups_fk" FOREIGN KEY ("chain_id","maker","group") REFERENCES "router_v1.6"."groups"("chain_id","maker","group") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
160
+ ALTER TABLE "router_v1.6"."liquidity_links" ADD CONSTRAINT "liquidity_links_parent_pool_id_liquidity_pools_id_fk" FOREIGN KEY ("parent_pool_id") REFERENCES "router_v1.6"."liquidity_pools"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
161
+ ALTER TABLE "router_v1.6"."liquidity_links" ADD CONSTRAINT "liquidity_links_child_pool_id_liquidity_pools_id_fk" FOREIGN KEY ("child_pool_id") REFERENCES "router_v1.6"."liquidity_pools"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
162
+ ALTER TABLE "router_v1.6"."obligation_collaterals" ADD CONSTRAINT "obligation_collaterals_obligation_id_obligations_obligation_id_fk" FOREIGN KEY ("obligation_id") REFERENCES "router_v1.6"."obligations"("obligation_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
163
+ ALTER TABLE "router_v1.6"."obligation_collaterals_v2" ADD CONSTRAINT "obligation_collaterals_v2_obligation_id_obligations_obligation_id_fk" FOREIGN KEY ("obligation_id") REFERENCES "router_v1.6"."obligations"("obligation_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
164
+ ALTER TABLE "router_v1.6"."obligation_collaterals_v2" ADD CONSTRAINT "obligation_collaterals_v2_oracles_fk" FOREIGN KEY ("oracle_chain_id","oracle_address") REFERENCES "router_v1.6"."oracles"("chain_id","address") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
165
+ ALTER TABLE "router_v1.6"."offer_liquidity_pools" ADD CONSTRAINT "offer_liquidity_pools_offer_hash_offers_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
166
+ ALTER TABLE "router_v1.6"."offer_liquidity_pools" ADD CONSTRAINT "offer_liquidity_pools_pool_id_liquidity_pools_id_fk" FOREIGN KEY ("pool_id") REFERENCES "router_v1.6"."liquidity_pools"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
167
+ ALTER TABLE "router_v1.6"."offer_status" ADD CONSTRAINT "offer_status_offer_hash_offers_v2_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers_v2"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
168
+ ALTER TABLE "router_v1.6"."offer_status" ADD CONSTRAINT "offer_status_status_id_status_id_fk" FOREIGN KEY ("status_id") REFERENCES "router_v1.6"."status"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
169
+ ALTER TABLE "router_v1.6"."offers" ADD CONSTRAINT "offers_obligation_id_obligations_obligation_id_fk" FOREIGN KEY ("obligation_id") REFERENCES "router_v1.6"."obligations"("obligation_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
170
+ ALTER TABLE "router_v1.6"."offers_v2" ADD CONSTRAINT "offers_v2_obligation_id_obligations_obligation_id_fk" FOREIGN KEY ("obligation_id") REFERENCES "router_v1.6"."obligations"("obligation_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
171
+ ALTER TABLE "router_v1.6"."offers_v2" ADD CONSTRAINT "offers_v2_groups_fk" FOREIGN KEY ("group_chain_id","group_maker","group_group") REFERENCES "router_v1.6"."groups"("chain_id","maker","group") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
172
+ CREATE UNIQUE INDEX "chains_id_epoch_idx" ON "router_v1.6"."chains" USING btree ("chain_id","epoch");--> statement-breakpoint
173
+ CREATE UNIQUE INDEX "collectors_chain_name_epoch_idx" ON "router_v1.6"."collectors" USING btree ("chain_id","name","epoch");--> statement-breakpoint
174
+ CREATE INDEX "consumed_per_user_and_nonce_chain_id_offering_nonce_block_number_idx" ON "router_v1.6"."consumed_per_user_and_nonce" USING btree ("chain_id","offering","nonce","block_number" desc);--> statement-breakpoint
175
+ CREATE INDEX "consumed_events_group_idx" ON "router_v1.6"."consumed_events" USING btree ("chain_id","maker","group");--> statement-breakpoint
176
+ CREATE INDEX "consumed_events_block_number_idx" ON "router_v1.6"."consumed_events" USING btree ("block_number");--> statement-breakpoint
177
+ CREATE INDEX "groups_chain_id_maker_group_consumed_idx" ON "router_v1.6"."groups" USING btree ("chain_id","maker","group","consumed");--> statement-breakpoint
178
+ CREATE INDEX "liquidity_links_parent_pool_id_idx" ON "router_v1.6"."liquidity_links" USING btree ("parent_pool_id");--> statement-breakpoint
179
+ CREATE INDEX "liquidity_links_child_pool_id_idx" ON "router_v1.6"."liquidity_links" USING btree ("child_pool_id");--> statement-breakpoint
180
+ CREATE INDEX "obligation_collaterals_obligation_id_idx" ON "router_v1.6"."obligation_collaterals" USING btree ("obligation_id");--> statement-breakpoint
181
+ CREATE INDEX "obligation_collaterals_v2_obligation_id_idx" ON "router_v1.6"."obligation_collaterals_v2" USING btree ("obligation_id");--> statement-breakpoint
182
+ CREATE INDEX "obligation_collaterals_v2_oracle_fk_idx" ON "router_v1.6"."obligation_collaterals_v2" USING btree ("oracle_chain_id","oracle_address");--> statement-breakpoint
183
+ CREATE INDEX "offer_liquidity_pools_pool_id_idx" ON "router_v1.6"."offer_liquidity_pools" USING btree ("pool_id");--> statement-breakpoint
184
+ CREATE INDEX "offer_status_status_hash_idx" ON "router_v1.6"."offer_status" USING btree ("status_id","offer_hash");--> statement-breakpoint
185
+ CREATE INDEX "offers_obligation_id_idx" ON "router_v1.6"."offers" USING btree ("obligation_id");--> statement-breakpoint
186
+ CREATE INDEX "offers_offering_idx" ON "router_v1.6"."offers" USING btree ("offering");--> statement-breakpoint
187
+ CREATE INDEX "offers_buy_idx" ON "router_v1.6"."offers" USING btree ("buy");--> statement-breakpoint
188
+ CREATE INDEX "offers_chain_id_idx" ON "router_v1.6"."offers" USING btree ("chain_id");--> statement-breakpoint
189
+ CREATE INDEX "offers_loan_token_idx" ON "router_v1.6"."offers" USING btree ("loan_token");--> statement-breakpoint
190
+ CREATE INDEX "offers_maturity_idx" ON "router_v1.6"."offers" USING btree ("maturity");--> statement-breakpoint
191
+ CREATE INDEX "offers_expiry_idx" ON "router_v1.6"."offers" USING btree ("expiry");--> statement-breakpoint
192
+ CREATE INDEX "offers_rate_idx" ON "router_v1.6"."offers" USING btree ("rate");--> statement-breakpoint
193
+ CREATE INDEX "offers_assets_idx" ON "router_v1.6"."offers" USING btree ("assets");--> statement-breakpoint
194
+ CREATE INDEX "offers_created_at_idx" ON "router_v1.6"."offers" USING btree ("created_at");--> statement-breakpoint
195
+ CREATE INDEX "offers_block_number_idx" ON "router_v1.6"."offers" USING btree ("block_number");--> statement-breakpoint
196
+ CREATE INDEX "offers_rate_hash_idx" ON "router_v1.6"."offers" USING btree ("rate","hash");--> statement-breakpoint
197
+ CREATE INDEX "offers_maturity_hash_idx" ON "router_v1.6"."offers" USING btree ("maturity","hash");--> statement-breakpoint
198
+ CREATE INDEX "offers_expiry_hash_idx" ON "router_v1.6"."offers" USING btree ("expiry","hash");--> statement-breakpoint
199
+ CREATE INDEX "offers_assets_hash_idx" ON "router_v1.6"."offers" USING btree ("assets","hash");--> statement-breakpoint
200
+ CREATE INDEX "offers_rate_created_at_assets_hash_idx" ON "router_v1.6"."offers" USING btree ("rate","created_at" asc,"assets" desc,"hash" asc);--> statement-breakpoint
201
+ CREATE INDEX "offers_v2_group_fk_idx" ON "router_v1.6"."offers_v2" USING btree ("group_chain_id","group_maker","group_group");--> statement-breakpoint
202
+ CREATE INDEX "offers_v2_group_winner_sell_side_idx" ON "router_v1.6"."offers_v2" USING btree ("group_chain_id","group_maker","group_group","rate" desc,"block_number" asc,"assets" desc,"hash" asc);--> statement-breakpoint
203
+ CREATE INDEX "offers_v2_group_winner_buy_side_idx" ON "router_v1.6"."offers_v2" USING btree ("group_chain_id","group_maker","group_group","rate" asc,"block_number" asc,"assets" desc,"hash" asc);--> statement-breakpoint
204
+ CREATE INDEX "offers_v2_obligation_id_side_idx" ON "router_v1.6"."offers_v2" USING btree ("obligation_id","buy");
@@ -0,0 +1,58 @@
1
+ CREATE OR REPLACE FUNCTION apply_group_consumed_delta()
2
+ RETURNS trigger LANGUAGE plpgsql AS $$
3
+ DECLARE
4
+ v_chain_id bigint;
5
+ v_maker varchar(42);
6
+ v_group varchar(66);
7
+ v_delta numeric;
8
+ BEGIN
9
+ IF TG_OP = 'INSERT' THEN
10
+ v_chain_id := NEW.chain_id;
11
+ v_maker := NEW.maker;
12
+ -- group needs to be quoted because it's a reserved word
13
+ v_group := NEW."group";
14
+ v_delta := NEW.amount;
15
+
16
+ ELSIF TG_OP = 'UPDATE' THEN
17
+ -- if group keys changed, subtract from old & add to new
18
+ IF NEW.chain_id = OLD.chain_id AND NEW.maker = OLD.maker AND NEW."group" = OLD."group" THEN
19
+ v_chain_id := NEW.chain_id; v_maker := NEW.maker; v_group := NEW."group";
20
+ v_delta := NEW.amount - OLD.amount;
21
+ ELSE
22
+ -- move: undo old...
23
+ UPDATE "router_v1.6"."groups" g
24
+ SET consumed = (g.consumed - OLD.amount)
25
+ WHERE g.chain_id = OLD.chain_id AND g.maker = OLD.maker AND g."group" = OLD."group";
26
+
27
+ -- ...apply new
28
+ UPDATE "router_v1.6"."groups" g
29
+ SET consumed = (g.consumed + NEW.amount)
30
+ WHERE g.chain_id = NEW.chain_id AND g.maker = NEW.maker AND g."group" = NEW."group";
31
+
32
+ RETURN NEW;
33
+ END IF;
34
+
35
+ ELSIF TG_OP = 'DELETE' THEN
36
+ v_chain_id := OLD.chain_id;
37
+ v_maker := OLD.maker;
38
+ v_group := OLD."group";
39
+ v_delta := -OLD.amount;
40
+
41
+ ELSE
42
+ RAISE EXCEPTION 'Unsupported TG_OP %', TG_OP;
43
+ END IF;
44
+
45
+ UPDATE "router_v1.6"."groups" g
46
+ SET consumed = (g.consumed + v_delta)
47
+ WHERE g.chain_id = v_chain_id AND g.maker = v_maker AND g."group" = v_group;
48
+
49
+ RETURN COALESCE(NEW, OLD);
50
+ END;
51
+ $$; --> statement-breakpoint
52
+
53
+ -- trigger names can’t be schema-qualified
54
+ DROP TRIGGER IF EXISTS trg_consumed_events ON "router_v1.6"."consumed_events"; --> statement-breakpoint
55
+
56
+ CREATE TRIGGER trg_consumed_events
57
+ AFTER INSERT OR UPDATE OR DELETE ON "router_v1.6"."consumed_events"
58
+ FOR EACH ROW EXECUTE FUNCTION apply_group_consumed_delta();
@@ -0,0 +1 @@
1
+ INSERT INTO "router_v1.6"."status" ("code") VALUES ('VALID'), ('NOT_ENOUGH_LIQUIDITY');
@@ -0,0 +1,3 @@
1
+ -- drop old row-level trigger (if present)
2
+ DROP TRIGGER IF EXISTS trg_consumed_events ON "router_v1.6"."consumed_events"; --> statement-breakpoint
3
+ DROP FUNCTION IF EXISTS apply_group_consumed_delta() CASCADE;
@@ -0,0 +1 @@
1
+ ALTER TABLE "router_v1.6"."offer_status" DROP CONSTRAINT "offer_status_offer_hash_offers_v2_hash_fk";
@@ -0,0 +1 @@
1
+ CREATE INDEX "offers_v2_group_and_hash_idx" ON "router_v1.6"."offers_v2" USING btree ("group_chain_id","group_maker","group_group","hash");
@@ -0,0 +1,37 @@
1
+ CREATE TYPE "router_v1.6"."position_type" AS ENUM('erc20', 'vault_v1');--> statement-breakpoint
2
+ CREATE TABLE "router_v1.6"."callbacks" (
3
+ "id" varchar(66) PRIMARY KEY NOT NULL,
4
+ "position_chain_id" bigint NOT NULL,
5
+ "position_contract" varchar(42) NOT NULL,
6
+ "position_user" varchar(42) NOT NULL,
7
+ "amount" numeric(78, 0) NOT NULL
8
+ );
9
+ --> statement-breakpoint
10
+ CREATE TABLE "router_v1.6"."offers_callbacks" (
11
+ "offer_hash" varchar(66) NOT NULL,
12
+ "callback_id" varchar(66),
13
+ CONSTRAINT "offers_callbacks_pk" PRIMARY KEY("offer_hash","callback_id")
14
+ );
15
+ --> statement-breakpoint
16
+ CREATE TABLE "router_v1.6"."position_types" (
17
+ "id" serial PRIMARY KEY NOT NULL,
18
+ "type" "router_v1.6"."position_type" NOT NULL
19
+ );
20
+ --> statement-breakpoint
21
+ CREATE TABLE "router_v1.6"."positions" (
22
+ "chain_id" bigint NOT NULL,
23
+ "contract" varchar(42) NOT NULL,
24
+ "user" varchar(42) NOT NULL,
25
+ "position_type_id" integer NOT NULL,
26
+ "balance" numeric(78, 0),
27
+ "block_number" bigint NOT NULL,
28
+ "updated_at" timestamp DEFAULT now() NOT NULL,
29
+ CONSTRAINT "positions_pk" PRIMARY KEY("chain_id","contract","user")
30
+ );
31
+ --> statement-breakpoint
32
+ ALTER TABLE "router_v1.6"."offer_status" DROP CONSTRAINT "offer_status_status_id_status_id_fk";
33
+ --> statement-breakpoint
34
+ ALTER TABLE "router_v1.6"."callbacks" ADD CONSTRAINT "callbacks_positions_fk" FOREIGN KEY ("position_chain_id","position_contract","position_user") REFERENCES "router_v1.6"."positions"("chain_id","contract","user") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
35
+ ALTER TABLE "router_v1.6"."offers_callbacks" ADD CONSTRAINT "offers_callbacks_offer_hash_offers_v2_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers_v2"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
36
+ ALTER TABLE "router_v1.6"."positions" ADD CONSTRAINT "positions_position_type_id_position_types_id_fk" FOREIGN KEY ("position_type_id") REFERENCES "router_v1.6"."position_types"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
37
+ ALTER TABLE "router_v1.6"."offer_status" ADD CONSTRAINT "offer_status_status_id_status_id_fk" FOREIGN KEY ("status_id") REFERENCES "router_v1.6"."status"("id") ON DELETE no action ON UPDATE no action;
@@ -0,0 +1,15 @@
1
+ CREATE TABLE "router_v1.6"."validations" (
2
+ "offer_hash" varchar(66) PRIMARY KEY NOT NULL,
3
+ "status_id" integer NOT NULL,
4
+ "updated_at" timestamp DEFAULT now() NOT NULL
5
+ );
6
+ --> statement-breakpoint
7
+ DELETE FROM "router_v1.6"."status" WHERE "code" = 'NOT_ENOUGH_LIQUIDITY';--> statement-breakpoint
8
+ DROP TABLE "router_v1.6"."offer_status" CASCADE;--> statement-breakpoint
9
+ ALTER TABLE "router_v1.6"."status" ALTER COLUMN "code" SET DATA TYPE text;--> statement-breakpoint
10
+ UPDATE "router_v1.6"."status" SET "code" = 'SIMULATION_ERROR' WHERE "code" = 'NOT_ENOUGH_LIQUIDITY';--> statement-breakpoint
11
+ DROP TYPE "router_v1.6"."status_code";--> statement-breakpoint
12
+ CREATE TYPE "router_v1.6"."status_code" AS ENUM('VALID', 'SIMULATION_ERROR');--> statement-breakpoint
13
+ ALTER TABLE "router_v1.6"."status" ALTER COLUMN "code" SET DATA TYPE "router_v1.6"."status_code" USING "code"::"router_v1.6"."status_code";--> statement-breakpoint
14
+ ALTER TABLE "router_v1.6"."validations" ADD CONSTRAINT "validations_offer_hash_offers_v2_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers_v2"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
15
+ ALTER TABLE "router_v1.6"."validations" ADD CONSTRAINT "validations_status_id_status_id_fk" FOREIGN KEY ("status_id") REFERENCES "router_v1.6"."status"("id") ON DELETE no action ON UPDATE no action;
@@ -0,0 +1,14 @@
1
+ CREATE TABLE "router_v1.6"."transfers" (
2
+ "event_id" varchar(128) PRIMARY KEY NOT NULL,
3
+ "chain_id" bigint NOT NULL,
4
+ "contract" varchar(42) NOT NULL,
5
+ "from" varchar(42) NOT NULL,
6
+ "to" varchar(42) NOT NULL,
7
+ "value" numeric(78, 0) NOT NULL,
8
+ "block_number" bigint NOT NULL,
9
+ "created_at" timestamp DEFAULT now() NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ ALTER TABLE "router_v1.6"."transfers" ADD CONSTRAINT "transfers_positions_from_fk" FOREIGN KEY ("chain_id","contract","from") REFERENCES "router_v1.6"."positions"("chain_id","contract","user") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
13
+ ALTER TABLE "router_v1.6"."transfers" ADD CONSTRAINT "transfers_positions_to_fk" FOREIGN KEY ("chain_id","contract","to") REFERENCES "router_v1.6"."positions"("chain_id","contract","user") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
14
+ CREATE INDEX "transfers_chain_contract_user_idx" ON "router_v1.6"."transfers" USING btree ("chain_id","contract","from","to","block_number");
@@ -0,0 +1 @@
1
+ ALTER TABLE "router_v1.6"."oracles" ADD COLUMN "price" numeric(78, 0);
@@ -0,0 +1 @@
1
+ ALTER TABLE "router_v1.6"."callbacks" ALTER COLUMN "amount" DROP NOT NULL;
@@ -0,0 +1 @@
1
+ ALTER TABLE "router_v1.6"."positions" ADD COLUMN asset VARCHAR(42);
@@ -0,0 +1,13 @@
1
+ ALTER TABLE "router_v1.6"."consumed_per_user_and_nonce" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
2
+ ALTER TABLE "router_v1.6"."liquidity_links" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
3
+ ALTER TABLE "router_v1.6"."liquidity_pools" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
4
+ ALTER TABLE "router_v1.6"."obligation_collaterals" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
5
+ ALTER TABLE "router_v1.6"."offer_liquidity_pools" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
6
+ ALTER TABLE "router_v1.6"."offers" DISABLE ROW LEVEL SECURITY;--> statement-breakpoint
7
+ DROP TABLE "router_v1.6"."consumed_per_user_and_nonce" CASCADE;--> statement-breakpoint
8
+ DROP TABLE "router_v1.6"."liquidity_links" CASCADE;--> statement-breakpoint
9
+ DROP TABLE "router_v1.6"."liquidity_pools" CASCADE;--> statement-breakpoint
10
+ DROP TABLE "router_v1.6"."obligation_collaterals" CASCADE;--> statement-breakpoint
11
+ DROP TABLE "router_v1.6"."offer_liquidity_pools" CASCADE;--> statement-breakpoint
12
+ DROP TABLE "router_v1.6"."offers" CASCADE;--> statement-breakpoint
13
+ ALTER TABLE "router_v1.6"."callbacks" ALTER COLUMN "amount" DROP NOT NULL;
@@ -0,0 +1,23 @@
1
+ ALTER TABLE "router_v1.6"."offers_v2" RENAME TO "offers";--> statement-breakpoint
2
+ ALTER TABLE "router_v1.6"."offers_callbacks" DROP CONSTRAINT "offers_callbacks_offer_hash_offers_v2_hash_fk";
3
+ --> statement-breakpoint
4
+ ALTER TABLE "router_v1.6"."offers" DROP CONSTRAINT "offers_v2_obligation_id_obligations_obligation_id_fk";
5
+ --> statement-breakpoint
6
+ ALTER TABLE "router_v1.6"."offers" DROP CONSTRAINT "offers_v2_groups_fk";
7
+ --> statement-breakpoint
8
+ ALTER TABLE "router_v1.6"."validations" DROP CONSTRAINT "validations_offer_hash_offers_v2_hash_fk";
9
+ --> statement-breakpoint
10
+ DROP INDEX "router_v1.6"."offers_v2_group_fk_idx";--> statement-breakpoint
11
+ DROP INDEX "router_v1.6"."offers_v2_group_and_hash_idx";--> statement-breakpoint
12
+ DROP INDEX "router_v1.6"."offers_v2_group_winner_sell_side_idx";--> statement-breakpoint
13
+ DROP INDEX "router_v1.6"."offers_v2_group_winner_buy_side_idx";--> statement-breakpoint
14
+ DROP INDEX "router_v1.6"."offers_v2_obligation_id_side_idx";--> statement-breakpoint
15
+ ALTER TABLE "router_v1.6"."offers_callbacks" ADD CONSTRAINT "offers_callbacks_offer_hash_offers_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
16
+ ALTER TABLE "router_v1.6"."offers" ADD CONSTRAINT "offers_obligation_id_obligations_obligation_id_fk" FOREIGN KEY ("obligation_id") REFERENCES "router_v1.6"."obligations"("obligation_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
17
+ ALTER TABLE "router_v1.6"."offers" ADD CONSTRAINT "offers_groups_fk" FOREIGN KEY ("group_chain_id","group_maker","group_group") REFERENCES "router_v1.6"."groups"("chain_id","maker","group") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
18
+ ALTER TABLE "router_v1.6"."validations" ADD CONSTRAINT "validations_offer_hash_offers_hash_fk" FOREIGN KEY ("offer_hash") REFERENCES "router_v1.6"."offers"("hash") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
19
+ CREATE INDEX "offers_group_fk_idx" ON "router_v1.6"."offers" USING btree ("group_chain_id","group_maker","group_group");--> statement-breakpoint
20
+ CREATE INDEX "offers_group_and_hash_idx" ON "router_v1.6"."offers" USING btree ("group_chain_id","group_maker","group_group","hash");--> statement-breakpoint
21
+ CREATE INDEX "offers_group_winner_sell_side_idx" ON "router_v1.6"."offers" USING btree ("group_chain_id","group_maker","group_group","rate" desc,"block_number" asc,"assets" desc,"hash" asc);--> statement-breakpoint
22
+ CREATE INDEX "offers_group_winner_buy_side_idx" ON "router_v1.6"."offers" USING btree ("group_chain_id","group_maker","group_group","rate" asc,"block_number" asc,"assets" desc,"hash" asc);--> statement-breakpoint
23
+ CREATE INDEX "offers_obligation_id_side_idx" ON "router_v1.6"."offers" USING btree ("obligation_id","buy");