Rebuild: schema for groups, rule sets, ranges, release catalog, chunk store, fragments, probe queue, rule bookkeeping and nodes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a18ead666b
commit
2209921846
11 files changed
+1228
No files matched your search
@@ -0,0 +1,34 @@
|
||||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
import env from '#start/env'
|
||||
|
||||
/**
|
||||
* The chunk store (REBUILD.md, part 3; decision a): one write-once row per
|
||||
* release per batch, its files encoded by lib/chunks. Partitioned by month
|
||||
* of writing, in CHUNK_TABLESPACE (the HDD) when set; ChunkPartitions keeps
|
||||
* the next months' partitions ready. A re-run of a range replaces its chunks
|
||||
* (by range_id).
|
||||
*/
|
||||
export default class extends BaseSchema {
|
||||
async up() {
|
||||
const tablespace = env.get('CHUNK_TABLESPACE')
|
||||
const where = tablespace ? ` TABLESPACE ${tablespace}` : ''
|
||||
this.schema.raw(`
|
||||
CREATE TABLE release_chunks (
|
||||
id bigserial,
|
||||
release_id bigint NOT NULL,
|
||||
range_id bigint NOT NULL,
|
||||
batch_seq integer NOT NULL,
|
||||
files integer NOT NULL,
|
||||
segments integer NOT NULL,
|
||||
payload bytea NOT NULL,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (id, created_at)
|
||||
) PARTITION BY RANGE (created_at)${where}`)
|
||||
this.schema.raw(`CREATE INDEX release_chunks_release_idx ON release_chunks (release_id)`)
|
||||
this.schema.raw(`CREATE INDEX release_chunks_range_idx ON release_chunks (range_id)`)
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.raw(`DROP TABLE IF EXISTS release_chunks CASCADE`)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user