-
Notifications
You must be signed in to change notification settings - Fork 35
/
TODO
39 lines (38 loc) · 1.78 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
* Testing framework!
- Tasty batches
- Test round trip of example .avro containers
- Test round trip of each type.
- Data.Avro level To/From Avro classes
- Data.Avro.{Encode,Decode} level ToAvro/GetAvro classes
- Test 'deconflict' for all pathalogical deconflications
* In-comment in-haddock tutorials and examples.
* Deal with 'order'?
* Refactor modules.
- Schema also has lots of instances and parsing
- 'Types' holds value types while shema hold type types - confusing!
* Make reasonable exceptions instead of using 'error'
* Lazily decode containers.
* Dog food some more: Container decoding is manual, use the damned schema!
* Handle namespaces properly
- We don't account for identical schemas across name boundaries when resolving
names (env)!
- We pollute the env with all names unqualified, we should keep each env in a namespace
and qualify the _query_.
* More 'FromAvro' and 'ToAvro' instances.
* More from/ToAvro helpers in the style of Aesons '.:'.
* Grep for XXX and fix - plenty of them.
* Remove dead code, commented out code and explorations.
Consider:
* Encoding unions in JSON is the reason we need the encoder schema... right? Crazy.
* Move to closer integration with Aeson
* Move to using Aeson 'Value' instead of Avro.Types.Value?
* Move to using Aeson 'Result'? I want a MonadExcept instance.
* Use Attoparsec? What would be the motivation away from `binary`?
* Make a composible schema deconfliction `deconflict :: Schema -> Schema ->
Schema` ... requires embedding the decoding routine inside the schema so
perhaps yuck.
* Prettier error messages, such as unresolvable schema's. (or, who cares,
schemas can't be resolved deal with it?)
* Support RPC
* Make a .Generic module for encoding and decoding types that have generic
derived.