Add a new projection for handling the creation of bands
with support for upserts in the database. Update the
README to document the DanceFinder domain package's
architecture and naming conventions, aligning with
Domain-Driven Design and Event Sourcing principles.
New dependencies are included for database testing and
event sourcing functionalities.
refactor(schema): rename UUID columns to standard IDs
Simplify database schema by removing dual identity system
and standardizing column names. All tables now use a single
UUID-type `id` column, with foreign keys renamed to `band_id`
and `dance_hall_id`, enhancing clarity and consistency in
identifying records. Update all related code to reflect these
changes, improving developer experience and maintaining data
integrity throughout the migration.
feat: add truncate functionality for projection tables
Add functions to truncate the band, dance_hall, event, and user
preference tables to enable rebuilding projections from events.
Eliminate foreign key constraints between read view tables to
ensure referential integrity is maintained at the write side and
allow independent resets of read models. Include documentation
explaining the architectural decision against foreign key usage
within the system.
feat(migrations): rename UUID columns to id and simplify schema
Update database schema by renaming UUID columns to 'id' across
event, band, dance_hall, ignored_band, and ignored_dance_hall
tables. Drop old numeric IDs and foreign key constraints to
streamline the schema, ensuring UUIDs serve as primary
identifiers. Recreate necessary foreign key constraints with
the updated column names to maintain referential integrity.
feat(database): replace integer IDs with UUIDs for events
Update event and associated entities to use UUIDs instead of
integer IDs. Modify SQL queries and data structures to ensure
band and dance hall identifiers are UUIDs, enhancing the
system's scalability and integration capabilities.