Conversation
Introduce Open Referral HSDS 3.2.3 tables and immutable import audit storage alongside the existing public app schema.
Parse allowlisted seed tables into audit snapshots and upsert canonical HSDS records with deterministic UUIDs.
Add paginated JSON routes for services, organizations, taxonomies, taxonomy terms, and service-at-locations.
Describe the multi-schema layout, import workflow, and public HSDS API routes.
Drop the hsds/import_audit schema split and keep only canonical HSDS tables in public.
Require empty canonical tables, validate unsupported fields, and print a JSON report instead of persisting import audit rows.
Serialize linked attributes for taxonomy term detail endpoints.
Document the single-schema layout and saving the importer JSON report beside the source dump.
Keep a canonical parentId for multi-parent taxonomy terms, reject invalid phones/addresses/days in preflight, and avoid rebuilding the address index per service.
Load organization/service attributes in one query, include them on nested full_service payloads and taxonomy-term lists, and stop top_only from clobbering parent_id.
Point the importer at db/seed.sql by default and document optional path overrides.
Integer storage dropped leading zeros from dump values like ext=0967. Store the HSDS extension field as text through Prisma and import.
Document the conversion rules and align the importer and API metadata with them, including ignored-table counts, warnings, and stricter schedule and taxonomy query handling.
samau3
marked this pull request as ready for review
August 17, 2026 23:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a lossy public-directory conversion, not a 1:1 clone of the ShelterTech schema. Canonical HSDS rows live in
public; the immutable source dump and conversion report are the provenance trail. Raw ShelterTech rows are not copied into the operational database.npm run import:sheltertechconverts 33 allowlisted tables, validates source data, requires empty canonical tables, and writes deterministic HSDS records in one transaction/api; conversion profile linked from API metadata and the READMEConversion policy
accessibilities,categories_keywords,categories_sites,keywords*,news_articles,synonym_groups, andsynonymsattributesparent_id; extras →additional_parentattributestrue/falseflagsaddresses_servicesAmerica/Los_Angeleslocal wall-clock time; no UTC conversion240000:00:00; closing gets a next-day note, opening moves to the following weekdayclose_daynoteinternal_notesource_attribution,address_3/4, primary contact IDs, vocabulary, relationship priority, andopen_dayresources.statusstatus'1'accepted; imported asactivename_as_descriptioninferred mappingdescriptionfeefeesandfees_descriptiontypeunset, preserve the ShelterTech label indescription, and emit a warningtop_only=truewithparent_idReviewer feedback on assumptions made
voice?2400, and overnight schedule rules appropriate?The checked-in seed is synthetic and does not exercise multi-address organizations, explicit service/address links, structured schedule times, private notes, or every orphan case. Production assumptions should be confirmed against a real dump and retained conversion report.