· 6 years ago · Mar 13, 2019, 08:40 AM
1
2
3USE eventuate;
4
5DROP table IF EXISTS events;
6DROP table IF EXISTS entities;
7DROP table IF EXISTS snapshots;
8
9create table events (
10 event_id varchar(1000) PRIMARY KEY,
11 event_type varchar(1000),
12 event_data varchar(1000) NOT NULL,
13 entity_type VARCHAR(1000) NOT NULL,
14 entity_id VARCHAR(1000) NOT NULL,
15 triggering_event VARCHAR(1000),
16 metadata VARCHAR(1000),
17 published TINYINT DEFAULT 0
18);
19
20CREATE INDEX events_idx ON events(entity_type, entity_id, event_id);
21CREATE INDEX events_published_idx ON events(published, event_id);
22
23create table entities (
24 entity_type VARCHAR(1000),
25 entity_id VARCHAR(1000),
26 entity_version VARCHAR(1000) NOT NULL,
27 PRIMARY KEY(entity_type, entity_id)
28);
29
30CREATE INDEX entities_idx ON events(entity_type, entity_id);
31
32create table snapshots (
33 entity_type VARCHAR(1000),
34 entity_id VARCHAR(1000),
35 entity_version VARCHAR(1000),
36 snapshot_type VARCHAR(1000) NOT NULL,
37 snapshot_json VARCHAR(1000) NOT NULL,
38 triggering_events VARCHAR(1000),
39 PRIMARY KEY(entity_type, entity_id, entity_version)
40);
41
42
43DROP Table IF Exists message;
44DROP Table IF Exists received_messages;
45DROP Table IF Exists saga_instance;
46DROP Table IF Exists saga_instance_participants;
47DROP Table IF Exists aggre_instance_subscriptions;
48DROP Table IF Exists saga_lock_table;
49DROP Table IF Exists saga_stash_table;
50DROP Table IF Exists saga_enlisted_aggregates;
51
52CREATE TABLE message (
53 ID VARCHAR(120),
54 DESTINATION VARCHAR(1000) NOT NULL,
55 HEADERS VARCHAR(1000) NOT NULL,
56 PAYLOAD VARCHAR(1000) NOT NULL,
57 PRIMARY KEY(ID)
58);
59
60CREATE TABLE received_messages (
61 CONSUMER_ID VARCHAR(120),
62 MESSAGE_ID VARCHAR(120),
63 PRIMARY KEY(CONSUMER_ID, MESSAGE_ID)
64);
65
66CREATE TABLE saga_instance(
67 saga_type VARCHAR(100) NOT NULL,
68 saga_id VARCHAR(100) NOT NULL,
69 state_name VARCHAR(100) NOT NULL,
70 last_request_id VARCHAR(100),
71 saga_data_type VARCHAR(1000) NOT NULL,
72 saga_data_json VARCHAR(1000) NOT NULL,
73 PRIMARY KEY(saga_type, saga_id)
74);
75
76
77CREATE TABLE saga_instance_participants (
78 saga_type VARCHAR(100) NOT NULL,
79 saga_id VARCHAR(100) NOT NULL,
80 destination VARCHAR(100) NOT NULL,
81 resource VARCHAR(100) NOT NULL,
82 PRIMARY KEY(saga_type, saga_id, destination, resource)
83);
84
85CREATE TABLE aggre_instance_subscriptions(
86 aggregate_type VARCHAR(100) DEFAULT NULL,
87 aggregate_id VARCHAR(100) NOT NULL,
88 event_type VARCHAR(100) NOT NULL,
89 saga_id VARCHAR(100) NOT NULL,
90 saga_type VARCHAR(100) NOT NULL,
91 PRIMARY KEY(aggregate_id, event_type, saga_id, saga_type)
92);
93
94create table saga_lock_table(
95 target VARCHAR(100) NOT NULL,
96 saga_type VARCHAR(100) NOT NULL,
97 saga_Id VARCHAR(100) NOT NULL,
98 PRIMARY KEY(target)
99);
100
101create table saga_stash_table(
102 message_id VARCHAR(100) NOT NULL,
103 target VARCHAR(100) NOT NULL,
104 saga_type VARCHAR(100) NOT NULL,
105 saga_id VARCHAR(100) NOT NULL,
106 message_headers VARCHAR(1000) NOT NULL,
107 message_payload VARCHAR(1000) NOT NULL,
108 PRIMARY KEY(message_id)
109 );
110
111create table saga_enlisted_aggregates(
112 saga_id VARCHAR(100) NOT NULL,
113 aggregate_id VARCHAR(100) NOT NULL,
114 aggregate_type VARCHAR(100) DEFAULT NULL,
115 PRIMARY KEY(aggregate_id, saga_id)
116 );