Skip to content

Support date-only sets (date known, time TBA) in schedule import #45

@chiptus

Description

@chiptus

Problem

The schedule import can't represent a set whose date is known but time is not. If a CSV row has a Date but no Start Time, the date is silently dropped:

  • computeTimes (diff-schedule) only builds timeStart when both date and startTime are present — date alone yields timeStart = null.
  • The sets table has no standalone date column; the date only ever exists inside the time_start timestamp. SetPayload and the create_sets INSERT carry time_start / time_end, never a bare date.

So importing a date-only CSV creates sets with time_start = null and the date is lost entirely. (Re-importing date-only over sets that already have times preserves the existing times — preserve-on-omit — but still doesn't apply the CSV date.)

This is a real use case: festival lineups are often announced per-day before set times are finalized.

Scope of work

  1. Schema — add a way to record a date without a time. Likely a nullable sets.date column distinct from time_start, or an agreed convention. Needs a migration.
  2. Diff / commitcomputeTimes, SetPayload, commit_schedule__create_sets / __update_sets need to carry and persist the date independently of time_start. Decide interaction with the existing preserve-on-omit behavior.
  3. CSVDate alone (no Start Time) becomes a valid, meaningful input.
  4. UI research (do this first) — figure out how a date-only / untimed set should render in the schedule and lineup views, and how an entirely untimed set (time_start = null, no date) currently renders. The design of 1–3 depends on the answer.

Context

Surfaced while reviewing the schedule-ingestion PR (#31). Out of scope for that PR — this is a feature, not a fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions