Files
PodTui/tasks/podcast-tui-app/19-import-export.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

1.9 KiB

18. Create Sync Data Models (JSON/XML Formats)

meta: id: podcast-tui-app-18 feature: podcast-tui-app priority: P1 depends_on: [17] tags: [data-models, json, xml, sync, typescript]

objective:

  • Define TypeScript interfaces for JSON sync format
  • Define TypeScript interfaces for XML sync format
  • Ensure compatibility between formats
  • Add validation logic

deliverables:

  • src/types/sync-json.ts with JSON sync types
  • src/types/sync-xml.ts with XML sync types
  • src/utils/sync-validation.ts with validation logic
  • src/constants/sync-formats.ts with format definitions

steps:

  • Create src/types/sync-json.ts:
    • SyncData interface with all required fields
    • Include feeds, sources, settings, preferences
    • Add version field for format compatibility
    • Add timestamp for last sync
  • Create src/types/sync-xml.ts:
    • SyncDataXML interface
    • XML-compatible type definitions
    • Root element and child elements
    • Attributes for metadata
  • Create src/utils/sync-validation.ts:
    • validateJSONSync(data: unknown): SyncData
    • validateXMLSync(data: unknown): SyncDataXML
    • Field validation functions
    • Type checking
  • Create src/constants/sync-formats.ts:
    • JSON format version
    • XML format version
    • Supported versions list
    • Format extensions

tests:

  • Unit: Test JSON validation with valid/invalid data
  • Unit: Test XML validation with valid/invalid data
  • Integration: Test format compatibility

acceptance_criteria:

  • JSON sync types compile without errors
  • XML sync types compile without errors
  • Validation rejects invalid data
  • Format versions are tracked

validation:

  • Run bun run build to verify TypeScript
  • Test validation with sample data
  • Test with invalid data to verify rejection

notes:

  • JSON format: Simple, human-readable
  • XML format: More structured, better for complex data
  • Include all necessary fields for complete sync
  • Add comments explaining each field
  • Ensure backward compatibility