Skip to content

Latest commit

 

History

History
148 lines (144 loc) · 4.25 KB

roadmap.md

File metadata and controls

148 lines (144 loc) · 4.25 KB

Pana ORM - Roadmap

0.1.0

  • [-] Basic functionality
    • Model mapping with legacy decorator
      • Complex schema delegates for internal use
      • Plain schema metadata mapping for external use (e.g migration tracker, extension API)
    • [-] Relationship mapping
      • One-to-one
      • One-to-many
      • Many-to-many
      • Through relationships
      • Polymorphic relationships
      • Self-referencing relationships
    • Query API for common operations
      • Where
      • Limit/Offset
      • Order by
      • Select
      • Distinct
      • Join
      • Set operations (union, intersect, except)
      • Aggregate functions (count, sum, avg, min, max)
      • Any/All
      • Group by
      • Fetch as plain object instead of class/entity instance
      • Dataset's findByIdentity and findManyByIdentity
    • CUD operations
      • Insert
      • Insert many
      • Update
      • Update many by condition
      • Delete
      • Delete many by condition
      • Upsert
    • [-] Raw SQL query API
      • Basic support
      • Prepared statements
      • Advanced support (TBD)
        • Use schema's metadata for query building
        • Fetch as class or entity instance
        • Queryable interop
  • [-] Relationship API
    • [-] Lazy loading (default)
      • Many relationships (collection) with RelationSet
      • One relationship (record) with EntityRecord
    • Loading strategies
      • Eager or auto loading
      • Batch loading
      • Subquery loading
    • Loading depth control
      • Single level
      • Recursive
    • Fetching strategies
      • Single query
      • Split queries
    • Scope load by root collection for N+1 guard
  • Collection API with fusion mechanism
  • [-] DB support
    • Reusable ANSI SQL builder
    • PostgreSQL
    • MySQL
    • SQLite
    • MSSQL
  • [-] Internal API
    • Query context & context builder
    • Basic caching & hashing
    • Parameter mapper and extractor
    • Query execution
    • Query result processing with ResultMapper
      • Entity mapper
      • Scalar mapper
      • Record mapper
      • Integrate with IdentityMap
    • Connection pool-centric provider API
    • Identity map on connection level
  • Type transformers API (handle non-entity objects)
    • Common types (date, json, etc)
    • User-defined types
  • [-] Function or class' method adapter (support function call in query)
    • Built-in types
      • string
      • number
      • boolean
      • date
      • json
      • array
    • Built-in query helper
    • User-defined types
  • [-] QOL or helper enhacement
    • Created and updated timestamps
    • Soft delete
    • UUID primary key
    • [-] Composite primary key
      • Basic support
      • Advanced support (TBD)
    • Indexes
    • Concurrency lock (versioning)
  • Migration
  • Explicit transaction API
  • Query tagging
  • Documentation
  • Tests
  • Better error information
  • Release pipeline - transpile, minify, etc
    • TypeScript
    • Babel
    • Rollup
    • Webpack
    • Parcel
    • Uglify
    • Flow

Backlog

  • Compiled lambda query API
  • Better subquery support
  • Multi schema support
  • Advanced CUD operations
    • Batch insert using copy
    • Update many based on entities
    • Update many by join
  • CQRS support, read/write source separation
  • Explicit CTE support
  • Extension API for migrations from other ORMs
  • Custom thenable-based query instead of promise (for better query compsition with first, last, etc)
  • Model mapping with stage3 decorators
  • Model mapping with object construct
  • Model lifecycle hooks
  • Unit of work and persistence context
  • Change tracking
  • Unmanaged query builder API
  • Interop between Queryable <-> Unmanaged query builder <-> Raw SQL
  • [ ]
  • Query Context-based select sequence for better query planning
  • Query Logging
  • Interceptors
  • Values queryable API
  • Knex.js support
  • Non-SQL provider support
    • NoSQL databases
      • MongoDB
      • Cassandra
      • Redis
    • GraphQL API
    • ElasticSearch
  • Criteria-like query scoping API