i think i like tables
parent
43738a1d78
commit
6f0b268321
|
|
@ -29,7 +29,46 @@ func run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
return with.PSQL(ctx, *c, func(pg *sql.DB) error {
|
||||
log.Println("setup...")
|
||||
if _, err := pg.ExecContext(ctx, `
|
||||
DROP SCHEMA "pubsub" CASCADE;
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS "pubsub";
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".topic (
|
||||
id UUID NOT NULL DEFAULT GEN_RANDOM_UUID() PRIMARY KEY,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
partitions INTEGER NOT NULL DEFAULT 10,
|
||||
name TEXT UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".group (
|
||||
id UUID NOT NULL DEFAULT GEN_RANDOM_UUID() PRIMARY KEY,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
name TEXT UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".group_topic_partition_offset (
|
||||
group_name TEXT REFERENCES "pubsub".group(name) ON DELETE CASCADE,
|
||||
topic_name TEXT REFERENCES "pubsub".topic(name) ON DELETE CASCADE,
|
||||
partition INTEGER NOT NULL DEFAULT 0,
|
||||
partition_offset INTEGER NOT NULL,
|
||||
PRIMARY KEY (group_name, topic_name, partition)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".data (
|
||||
topic_name TEXT REFERENCES "pubsub".topic(name) ON DELETE CASCADE,
|
||||
partition INTEGER NOT NULL DEFAULT 0,
|
||||
partition_offset INTEGER NOT NULL DEFAULT 0,
|
||||
payload BYTEA NOT NULL,
|
||||
PRIMARY KEY (topic_name, partition, partition_offset)
|
||||
) PARTITION BY HASH (topic_name, partition);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".data_0 PARTITION OF "pubsub".data FOR VALUES WITH (modulus 3, remainder 0);
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".data_1 PARTITION OF "pubsub".data FOR VALUES WITH (modulus 3, remainder 1);
|
||||
CREATE TABLE IF NOT EXISTS "pubsub".data_2 PARTITION OF "pubsub".data FOR VALUES WITH (modulus 3, remainder 2);
|
||||
`); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue