Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 1.76 KB

TODO.md

File metadata and controls

60 lines (42 loc) · 1.76 KB

TODO

In no particular order.

Throughout

  • Eliminate json.Any, replace with empty interface or sum type.
  • Document creation of a client and issuing commands in README.md
  • Add tests
  • Add context
  • Add logger
  • Use more &Struct
  • Define most structs as [heap]

Options

  • Add support for unix socket connections
  • Parse connection strings with net.URL

Pool

  • Add timeout
  • Max idle time
  • Max life time
  • implement StickyConnectionPool

Client

  • Implement cluster client
  • Implement pipeline
  • Implement pub/sub
  • Implement retry_backoff
  • Handle errors properly
  • Implement hooks: provide a way to modify or customize the behavior of specific stages in the command execution process. Allow users to inject additional logic before or after a command is executed (such as logging).

Cmd

  • Format BaseCmd.string_arg returned string with append_arg instead of using string interpolation.

Cmdable

  • Add do API to issue unsupported commands
  • Support all commands listed here
  • get should return a nil result instead of an error when key does not exist https://docs.keydb.dev/docs/commands/#get. At the moment, Cmdable returns an error with a string 'nil'. It would be better to have a dedicated property for nil results. Create custom error type or return a struct with nil property.
  • Gracefully handle errors when issuing commands on a server that requires authentication while not being authenticated.

Proto

Reader

  • big number can be parsed to big.Integer

Writer

  • Handle []json.Any and map[string]json.Any (related to line 7 of this TODO)