Repository navigation
Several stations from one install #21
robert-dean
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Designed: 2026-08-07, while building the music director
Status: deferred deliberately. Nothing needs a second station yet, and building the fan-out now
would be schema ahead of use.
deadair is heading toward several stations from one install, not just one mount.
The shape when it lands
deadair.stations, one row per station: slug (main), display name, whether it is on air, theon-air list it is playing, how far through it, and that station's default rotation rules. This
subsumes the on-air pointer, which today is a one-row-per-slot table keyed
slot = 'main'.That slot column exists precisely so this becomes rows rather than a migration.
The ordered on-air lists gain aDone, ahead ofstation_id, as doesdeadair.play_history.the rest.
station_keyis now onplay_history,segments,segment_events,script_historyand
station_eventsas well asstation_lineupandstation_air, defaulting to'main', and thereads that are per-station questions filter on it:
play_history's three indexes lead with it, andthe activity feed applies it inside each arm of its union. It was done early because it is free
while there is one station and a migration over live broadcast state once there are two. A repeat
window is per station: two stations may legitimately both be playing the same record.
What is NOT done is the rest of this line's implication — nothing yet resolves a station key from a
request, so
StationIdentity.stationKeyis a constant and this table stakes the ground rather thanusing it.
stream.*settings stop being global andbecome per-station rows. That is the expensive half, and the reason this is deferred rather than
half-built.
Naming that follows from it
The
station_*prefix is deliberate, and "playlist" is reserved fordeadair.playlists(a savedlibrary of tracks deadair owns) rather than for what is on air. See rundown for the
served-vs-airing split the on-air list sits on top of.
Moved from
docs/todo/multi-station.md. The file as it last stood: https://github.com/robert-dean/deadair/blob/71e431d45ce7b35a189c7d226832ec4a6247e9dc/docs/todo/multi-station.mdAll reactions