Files
where_woof/openspec/changes/frontend-foundation/specs/database/spec.md

1.5 KiB

ADDED Requirements

Requirement: Shared Postgres database

The system SHALL use a single shared PostgreSQL database for all data. The canonical schema SHALL live in db/schema.sql until the Laravel admin takes over migration ownership.

Scenario: Schema applied to a fresh database

  • WHEN db/schema.sql is applied to an empty database
  • THEN the users, tags, and scans tables exist with the defined columns and constraints

Requirement: Users table

The users table SHALL store id, unique email, password hash, name, phone, and created_at.

Scenario: Unique emails

  • WHEN a second row is inserted with an email that already exists
  • THEN the database rejects the insert

Requirement: Tags table

The tags table SHALL store a unique public tag_code, owner reference, status (unset, active, suspended), item type, description, photo URL, phone, address, notes, and timestamps.

Scenario: Unique tag codes

  • WHEN a second row is inserted with a tag_code that already exists
  • THEN the database rejects the insert

Scenario: Status values

  • WHEN a row is inserted with a status not in the allowed set
  • THEN the database rejects the insert

Requirement: Scans table

The scans table SHALL record tag scans with timestamp, optional latitude/longitude, whether location was shared, optional scanner phone, and whether an alert was sent.

Scenario: Recording a scan

  • WHEN a scan of a tag is recorded
  • THEN a row exists with tag reference, timestamp, and location flags