Skip to content

feat: replace event datetime postmeta with dedicated event_dates table#153

Merged
chubes4 merged 1 commit intomainfrom
feature/event-dates-table
Mar 23, 2026
Merged

feat: replace event datetime postmeta with dedicated event_dates table#153
chubes4 merged 1 commit intomainfrom
feature/event-dates-table

Conversation

@chubes4
Copy link
Member

@chubes4 chubes4 commented Mar 23, 2026

Summary

Replace _datamachine_event_datetime and _datamachine_event_end_datetime postmeta with a dedicated datamachine_event_dates table. Clean cut — no postmeta fallback.

Performance

  • Upcoming event count on 37K events: 3-9 seconds → 7ms
  • Eliminates expensive postmeta JOINs across all event queries

What's New

  • EventDatesTable class — schema via dbDelta(), upsert(), get(), delete(), backfill()
  • datamachine_get_event_dates() global helper for single-post reads
  • datamachine_event_dates_updated action — replaces updated_post_meta/added_post_meta hooks
  • CLI: wp datamachine-events backfill-event-dates
  • Table auto-created on plugin activation

Migration Scope

Category Count Description
New files 1 EventDatesTable.php
Write path 2 meta-storage.php, CheckMetaSyncCommand.php
DateFilter 1 Rewritten to posts_clauses + parameterless SQL fragments
EventQueryBuilder 1 Returns cleanup callable, prevents filter leaks
meta_query → posts_clauses 17 All WP_Query date filtering locations
Raw SQL JOINs 6 postmeta → event_dates
get_post_meta reads 23 EventDatesTable::get()
Reactive hooks 1 EventIdentityWriter hooks new action
Total files 28

Backfill

Already run on production (37,294 events). Table verified with sample queries.

Cross-repo PRs

  • Extra-Chill/extrachill-events — 4 files (related-events, location-seo, venue-map, MarketReport)
  • Extra-Chill/extrachill-api — 2 files (upcoming-counts, markdown-export)

Replace _datamachine_event_datetime and _datamachine_event_end_datetime
postmeta with a new datamachine_event_dates table (post_id PK,
start_datetime, end_datetime). This eliminates expensive postmeta JOINs
across all event queries — upcoming count drops from 3-9s to 7ms on 37K events.

- New EventDatesTable class with schema, upsert, get, delete, backfill
- Write path: meta-storage.php uses EventDatesTable::upsert() instead of update_post_meta
- New datamachine_event_dates_updated action replaces updated_post_meta hooks
- datamachine_get_event_dates() global helper for single-post reads
- DateFilter rewritten: posts_clauses filters + parameterless SQL fragment methods
- EventQueryBuilder returns cleanup callable to prevent filter leaks
- All 17 meta_query locations switched to posts_clauses filters
- All 11 raw SQL locations switched from postmeta JOINs to event_dates JOINs
- All 23 get_post_meta reads switched to EventDatesTable::get()
- EventIdentityWriter hooks new datamachine_event_dates_updated action
- CLI backfill command: wp datamachine-events backfill-event-dates
- Table created on plugin activation via dbDelta
@homeboy-ci
Copy link
Contributor

homeboy-ci bot commented Mar 23, 2026

Homeboy Results — data-machine-events

Homeboy

Failure Digest

Lint Failure Digest

Test Failure Digest

Audit Failure Digest

Autofixability classification

  • Overall: auto_fixable
  • Autofix enabled: yes
  • Autofix attempted this run: no
  • Auto-fixable failed commands:
    • lint
    • test
  • Failed commands with available automated fixes:
    • lint
    • test

Machine-readable artifacts

  • homeboy-lint-summary.json
  • homeboy-test-failures.json
  • homeboy-audit-summary.json
  • homeboy-autofixability.json

⚡ Scope: changed files only

audit (changed files only)

  • Drift increased: no

lint (changed files only)

test (changed files only)

Tooling versions
  • Homeboy CLI: homeboy 0.85.3+f3d1a13
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v2

Homeboy Action v1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant