tickets
All repositories: gitoria
3.9 KB
// tests/oldstore.hl — the gate's LEGACY FIXTURE for ticket #20: a store as it was BEFORE projects were own// data — projects `{ name, created }`, tickets that name their project by NAME (path '<name>/<number>'),// the old state names, events with free-text authors — written straight into the mpackdb tables, exactly the// record shapes the pre-#20 store.hl wrote. The app's migrate.hl (run at every start) must turn it into// projects with ids, members and the new states.//// TICKETS_STORAGE=/abs/dir bin/hybriel tests/oldstore.hl (writes <dir>/{projects,tickets,events}.db)//// old #1 alpha created T in progress, 3 events (the comment and the state change share one ms)// old #3 alpha (alpha #2) created T+2min awaiting creator, 2 events (a Question ticket → pending)// old #4 alpha (alpha #3) created T+2min open, 1 event// old #2 beta.example.org created T+1min open, 1 event// old #5 beta.example.org created T+4min awaiting creator, 1 event (→ review)// → alpha #1 #2 #3 = old #1 #3 #4; beta.example.org #1 #2 = old #2 #5import { MPackDB } from 'hl:mpackdb'import { env } from 'hl:proc'dir = env('TICKETS_STORAGE')if (dir == null || !dir.startsWith('/')) { hlError('set TICKETS_STORAGE to an ABSOLUTE directory') }projects = new MPackDB(file = dir + '/projects.db', primaryKey = '@id', indexes = ['!name'])tickets = new MPackDB(file = dir + '/tickets.db', primaryKey = '@id', indexes = ['project', 'state', 'source', '!path', '*oldNumber'])events = new MPackDB(file = dir + '/events.db', primaryKey = '@id', indexes = ['@ticket'])if (tickets.count() > 0) { hlError('the fixture store is not empty: ' + dir) }T = 1790000000000M = 60000projects.put({ name = 'alpha' created = T })projects.put({ name = 'beta.example.org' created = T + M })t1 = tickets.put({ project = 'alpha' number = 1 path = 'alpha/1' oldNumber = 1 subject = 'Legacy alpha one' summary = 'first legacy ticket' state = 'in progress' source = '' created = T updated = T + 5 * M events = 3 })t2 = tickets.put({ project = 'beta.example.org' number = 1 path = 'beta.example.org/1' oldNumber = 2 subject = 'Legacy beta one' summary = '' state = 'open' source = '' created = T + M updated = T + M events = 1 })t3 = tickets.put({ project = 'alpha' number = 2 path = 'alpha/2' oldNumber = 3 subject = 'Question: legacy alpha two' summary = 'two' state = 'awaiting creator' source = '' created = T + 2 * M updated = T + 3 * M events = 2 })t4 = tickets.put({ project = 'alpha' number = 3 path = 'alpha/3' oldNumber = 4 subject = 'Legacy alpha three' summary = 'three' state = 'open' source = '' created = T + 2 * M updated = T + 2 * M events = 1 })t5 = tickets.put({ project = 'beta.example.org' number = 2 path = 'beta.example.org/2' oldNumber = 5 subject = 'Legacy beta two' summary = 'b2' state = 'awaiting creator' source = '' created = T + 4 * M updated = T + 4 * M events = 1 })events.put({ ticket = t1 seq = 1 kind = 'created' author = 'creator' text = '' created = T })events.put({ ticket = t2 seq = 1 kind = 'created' author = 'architect' text = '' created = T + M })events.put({ ticket = t3 seq = 1 kind = 'created' author = 'creator' text = '' created = T + 2 * M })events.put({ ticket = t4 seq = 1 kind = 'created' author = 'creator' text = '' created = T + 2 * M })events.put({ ticket = t5 seq = 1 kind = 'created' author = 'creator' text = '' created = T + 4 * M })events.put({ ticket = t3 seq = 2 kind = 'comment' author = 'worker' text = 'legacy comment on two' created = T + 3 * M })events.put({ ticket = t1 seq = 2 kind = 'comment' author = 'worker' text = 'legacy comment on one' created = T + 5 * M })events.put({ ticket = t1 seq = 3 kind = 'state' author = 'worker' text = 'started' from = 'open' to = 'in progress' created = T + 5 * M })console.log('oldstore: ' + projects.count() + ' projects, ' + tickets.count() + ' tickets, ' + events.count() + ' events (' + dir + ')')
Branches
- mainmain branch