Files
ResolveSpec/todo.md
T
warkanum f259df1258 feat(spectypes): add support for PostGIS and pgvector types
* Implement custom types: SqlGeometry, SqlGeography, SqlHalfVector, SqlSparseVector, SqlBitVector
* Add spatial filter operators and vector similarity operators
* Include metadata and OpenAPI reporting for geometry/vector column types
* Create tests for EWKB and WKT conversions
2026-08-29 21:27:42 +02:00

109 lines
4.0 KiB
Markdown

# ResolveSpec - TODO List
This document tracks incomplete features and improvements for the ResolveSpec project.
## In Progress
### Database Layer
- [x] SQLite schema translation (schema.table → schema_table)
- [x] Driver name normalization across adapters
- [x] Database Connection Manager (dbmanager) package
### Documentation
- [x] Add dbmanager to README
- [x] Add WebSocketSpec to top-level intro
- [x] Add MQTTSpec to top-level intro
- [x] Remove migration sections from README
- [ ] Complete API reference documentation
- [ ] Add examples for all supported databases
## Planned Features
### ResolveSpec JS Client Implementation & Testing
1. **ResolveSpec Client API (resolvespec-js)**
- [x] Core API implementation (read, create, update, delete, getMetadata)
- [ ] Unit tests for API functions
- [ ] Integration tests with server
- [ ] Error handling and edge cases
2. **HeaderSpec Client API (resolvespec-js)**
- [ ] Client API implementation
- [ ] Unit tests
- [ ] Integration tests with server
3. **FunctionSpec Client API (resolvespec-js)**
- [ ] Client API implementation
- [ ] Unit tests
- [ ] Integration tests with server
4. **WebSocketSpec Client API (resolvespec-js)**
- [x] WebSocketClient class implementation (read, create, update, delete, meta, subscribe, unsubscribe)
- [ ] Unit tests for WebSocketClient
- [ ] Connection handling tests
- [ ] Subscription tests
- [ ] Integration tests with server
5. **resolvespec-js Testing Infrastructure**
- [ ] Set up test framework (Jest or Vitest)
- [ ] Configure test coverage reporting
- [ ] Add test utilities and mocks
- [ ] Create test documentation
### ResolveSpec Python Client Implementation & Testing
See [`resolvespec-python/todo.md`](./resolvespec-python/todo.md) for detailed Python client implementation tasks.
### Core Functionality
1. **Enhanced Preload Filtering**
- [ ] Column selection for nested preloads
- [ ] Advanced filtering conditions for relations
- [ ] Performance optimization for deep nesting
2. **Advanced Query Features**
- [ ] Custom SQL join support
- [ ] Computed column improvements
- [ ] Recursive query support
3. **PostGIS & pgvector (PostgreSQL)**
- [x] Custom types: `SqlGeometry`/`SqlGeography` (GeoJSON I/O), `SqlHalfVector`, `SqlSparseVector`, `SqlBitVector`
- [x] Spatial filter operators (`st_dwithin`, `st_intersects`, `bbox`, …) in resolvespec + restheadspec
- [x] Vector similarity filter operators (`l2_within`, `cosine_within`, `ip_within`)
- [x] KNN structured option (`options.vector_search` / `X-Vector-Search-*` headers)
- [x] Metadata + OpenAPI report geometry/vector column types
- [ ] Integration tests against a PostGIS + pgvector database (needs test DB with extensions)
3. **Testing & Quality**
- [ ] Increase test coverage to 70%+
- [ ] Add integration tests for all ORMs
- [ ] Add concurrency tests for thread safety
- [ ] Performance benchmarks
### Infrastructure
- [ ] Improved error handling and reporting
- [ ] Enhanced logging capabilities
- [ ] Additional monitoring metrics
- [ ] Performance profiling tools
## Documentation Tasks
- [ ] Complete API reference
- [ ] Add troubleshooting guides
- [ ] Create architecture diagrams
- [ ] Expand database adapter documentation
## Known Issues
- [ ] Long preload alias names may exceed PostgreSQL identifier limit
- [ ] Some edge cases in computed column handling
- [ ] `GormResult.LastInsertId()` (`pkg/common/adapters/database/gorm.go:936`) always returns `0, nil` — GORM does not expose last insert ID via `sql.Result` for most dialects. Auto-generated IDs from GORM inserts are not propagated back through `LastInsertId`, which breaks the ID-retrieval path in `recursive_crud.go`. Fix: read the ID back from the model struct after `Create()` using reflection, or use GORM's `Statement.LastInsertId`.
---
**Last Updated:** 2026-08-29
**Updated:** Added PostGIS + pgvector support (types, filter operators, KNN, metadata/OpenAPI)