/// // Events werden datiert statt bewertet. // // Der Status (draft/active/finished) war Handarbeit: Jemand musste ein Event // aktiv schalten und hinterher wieder abschließen, sonst stand die Übersicht // falsch da. Ein Datum weiß von selbst, was ansteht, was läuft und was vorbei // ist. // // starts trägt den Tag; ends bleibt leer, wenn das Event nur einen Tag dauert, // und trägt sonst den letzten Tag. Beide sind optional, damit bestehende // Events ohne Datum weiterleben, bis jemand eines nachträgt. migrate((app) => { const events = app.findCollectionByNameOrId('events') // Auf einer frischen Datenbank hat der Snapshot die Felder bereits. if (!events.fields.getByName('starts')) { events.fields.add(new Field({ id: 'date_event_starts', name: 'starts', type: 'date', })) } if (!events.fields.getByName('ends')) { events.fields.add(new Field({ id: 'date_event_ends', name: 'ends', type: 'date', })) } if (events.fields.getByName('status')) { events.fields.removeByName('status') } app.save(events) }, (app) => { const events = app.findCollectionByNameOrId('events') events.fields.removeByName('starts') events.fields.removeByName('ends') events.fields.add(new Field({ id: 'select_event_status', name: 'status', type: 'select', maxSelect: 1, values: ['draft', 'active', 'finished'], })) app.save(events) })