3.6 KiB
3.6 KiB
Data Requirements
Purpose
Define requirements for calendar data storage in WordPress and for local testing data behavior.
Scope
This document covers:
- Persistent plugin data in WordPress database
- Data model expectations for calendar entries and recurrence
- Data handling for local compatibility-harness testing
Normative Boundaries
- This document defines high-level data requirements and test-data expectations.
- Concrete schema fields, constraints, and indexing are defined in
requirements/data_schema.md. - Recurrence exception semantics are defined in
requirements/recurrence_exceptions.md. - Runtime/code separation constraints are defined in
requirements/architecture.md.
Timezone Assumption
Unless explicitly overridden by a future requirement, all plugin dates and times are assumed to be in the Europe/London timezone.
WordPress Database Storage
Plugin data must be stored using WordPress-compatible database access patterns.
Requirements:
- Plugin-owned tables use WordPress table prefix conventions (
$wpdb->prefix). - Schema creation/migration uses WordPress APIs (see lifecycle requirements).
- Data access uses WordPress database APIs (
$wpdb) with prepared/safe queries. - Stored records support full CRUD and recurrence features required by editor/web UI.
Minimum Event Data Model
The stored model must support these fields (direct columns or normalized equivalents):
- Event identifier (internal primary key)
titlelocationcategoryall_day_eventflagstart_datetimeend_datetimerepeat_type(none,daily,weekly,monthly,yearly,custom)- Recurrence configuration (
interval,range_mode,count,until_date, base unit) description- Created/updated timestamps
Data Integrity Requirements
titleand start time/date must be required.- End must not be before start.
- Recurrence values must be internally consistent (e.g., positive interval/count).
- Deletes must not leave orphaned recurrence metadata or exception records.
- Migrations must preserve existing user data.
Query and Retrieval Requirements
- Data model must support efficient retrieval by date range for day/week/month/year UI windows.
- Data model must support generation of recurrence occurrences for both web UI and ICS output.
- Queries for public UI must return only intended public event data.
Local Testing Data Requirements
The local compatibility-harness test environment must support deterministic data setup and teardown.
Requirements:
- Provide seeded test data covering:
- Single non-recurring events
- All-day events
- Each recurrence type
- Custom recurrence with each range mode
- Edge cases (month boundaries, leap year, DST transitions where relevant)
- Test runs must isolate state between cases (clean database state or controlled fixtures).
- Test data setup scripts/fixtures must be version-controlled under
tests/and/orcompatibility-layer/.
Test Validation Data Requirements
Automated/local verification should include assertions for:
- CRUD persistence correctness
- Recurrence expansion correctness in 3-month preview windows
- Correct behavior of keep/remove data paths during uninstall
- Correct mapping readiness for ICS export fields
Backup and Recovery (Server Data)
- Production/test server data changes should be recoverable via normal backup processes.
- Destructive operations (e.g., uninstall data removal) require explicit intent and must be test-covered.
Documentation Requirements
Project docs must include:
- Current schema description
- Migration/versioning approach
- Local compatibility-harness usage
- Data retention behavior across install/upgrade/uninstall