Skip to content

Commit

Permalink
initial release - 0.1.0 (#1)
Browse files Browse the repository at this point in the history
* saving work so far

* maybe github workflow

* rm entrypoint maybe

* moving github workflow to trigger, maybe

* trying workflow redis config again

* tests use env url

* small refactor -> generic execute

* mv tests, crate docs

* more stuffs

* better readme

* append and get

* add todo markdown list

* updating todo list checkboxes

* fixing the pop mess and adding decr

* resolve decr

* cursor for copy, lpushx tests

* note for lpushx

* whoa, no cursor

* use err

* starting hash commands

* ups

* hsetnx too

* to do updates

* add echo

* echo done

* grouping commands, clearer priority

* drop bit field priority

* adding decrby

* check off decrby

* hexists, hget, hgetall, hkeys, hmget

* todo completion for h stuff

* todo formatting

* mset and msetnx

* todo doc updates

* hincrby, hstrlen, hvals

* more implementation, lrem, lset, ltrim, linsert, lindex

* todo updates

* add missing link

* removing unused test

* shape code, io feature

* more prep for ship
  • Loading branch information
dadleyy committed Oct 31, 2019
1 parent 0178fab commit 5c98d4d
Show file tree
Hide file tree
Showing 16 changed files with 3,009 additions and 6 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/build.yml
@@ -0,0 +1,24 @@
name: gh.build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
steps:
- uses: actions/checkout@v1
- name: install-beta
run: rustup toolchain install beta
- name: use-beta
run: rustup default beta
- name: build
run: cargo build
- name: test
run: cargo test --features kramer-io
env:
REDIS_HOST: localhost
REDIS_PORT: ${{ job.services.redis.ports[6379] }}
1 change: 0 additions & 1 deletion .gitignore
@@ -1,3 +1,2 @@
/target
**/*.rs.bk
Cargo.lock
278 changes: 278 additions & 0 deletions .todo.md
@@ -0,0 +1,278 @@
# Milestone: 0.1.0

| Command | Introduced | Use |
| :--- | :--- | :-- |
| `append` | [`9c23bf7`] | `Command::Strings(StringCommand::Append("seinfeld", "kramer")))` |
| `blpop` | [`d27df86`] | `ListCommand::Pop(Side::Left, "seinfeld", Some((None, 10)))` |
| `brpop` | [`d27df86`] | `ListCommand::Pop(Side::Right, "seinfeld", Some((None, 10)))` |
| `decr` | [`d27df86`] | `Command::Decr("seinfeld", 1)` |
| `decrby` | [`d51737e`] | `Command::Decr("seinfeld", 2)` |
| `del` | [`1a15a9e`] | `Command::Del(Arity::One("seinfeld"))` |
| `echo` | [`a851137`] | `Command::Echo("seinfeld")` |
| `exists` | [`1a15a9e`] | `Command::Exists("seinfeld")` |
| `get` | [`9c23bf7`] | `StringCommand::Get(Arity::One("seinfeld"))` |
| `hdel` | [`cd15162`] | `HashCommand::Del("seinfeld", "name", None))` |
| `hexists` | [`220d748`] | `HashCommand::Exists("seinfeld", "name"))` |
| `hget` | [`220d748`] | `HashCommand::Get("seinfeld", Some(Arity::One("name"))))` |
| `hgetall` | [`220d748`] | `HashCOmmand::Get("Seinfeld", None))` |
| `hincrby` | [`9ccd5fe`] | `HashCommand::Incr("counters", "episodes", 10)` |
| `hkeys` | [`220d748`] | `HashCommand::Keys("seinfeld")` |
| `hlen` | [`220d748`] | `HashCommand::Len("seinfeld")` |
| `hmget` | [`220d748`] | `HashCommand::Get("seinfeld", Some(Arity::Many(vec!["name", "friend"])))` |
| `hset` | [`9e08436`] | `HashCommand::Set("seinfeld", Arity::One(("name", "kramer")), Insertion::Always)` |
| `hsetnx` | [`9e08436`] | `HashCommand::Set("seinfeld", Arity::One(("name", "kramer")), Insertion::IfNotExists)` |
| `hstrlen` | [`9ccd5fe`] | `HashCommand::StrLen("seinfeld", "name")` |
| `hvals` | [`9ccd5fe`] | `HashCommand::Vals("seinfeld")` |
| `incr` | [`ea58902`] | `StringCommand::Incr("episodes", 1)` |
| `incrby` | [`ea58902`] | `StringCommand::Incr("episodes", 10)` |
| `keys` | [`1a15a9e`] | `Command::Keys("*")` |
| `lindex` | [`ea58902`] | `Command::List(ListCommand::Index("episodes", 1))` |
| `linsert` | [`ea58902`] | `Command::List(ListCommand::Insert("episodes", Side::Left, "10", "100"))` |
| `llen` | [`1a15a9e`] | `ListCommand::Len(key))` |
| `lpop` | [`1a15a9e`] | `ListCommand::Pop(Side::Left, key, None))` |
| `lpush` | [`1a15a9e`] | `ListCommand::Push((Side::Left, Insertion::Always), key, Arity::One("kramer")))` |
| `lpushx` | [`7b4f430`] | `ListCommand::Push((Side::Left, Insertion::IfExists), key, Arity::One("kramer")))` |
| `lrange` | [`1a15a9e`] | `ListCommand::Range("seinfeld", 0, -1)` |
| `lrem` | [`ea58902`] | `Command::List(ListCommand::Rem("episodes", "10", 100))` |
| `lset` | [`ea58902`] | `Command::List(ListCommand::Set("episodes", 1, "pilot"))` |
| `ltrim` | [`ea58902`] | `Command::List(ListCommand::Trim("episodes", 0, 10))` |
| `mget` | [`1a15a9e`] | `StringCommand::Get(Arity::Many(vec!["seinfeld", "peaky"]))` |
| `mset` | [`8e6cab7`] | `StringCommand::Set(Arity::Many(vec![("name", "jerry")]), None, Insertion::Always)` |
| `mset` | [`8e6cab7`] | `StringCommand::Set(Arity::Many(vec![("name", "jerry")]), None, Insertion::IfNotExists)` |
| `rpop` | [`1a15a9e`] | `ListCommand::Pop(Side::Right, key, None)` |
| `rpush` | [`1a15a9e`] | `ListCommand::Push((Side::Right, Insertion::Always), key, Arity::One("kramer")))` |
| `rpushx` | [`1a15a9e`] | `ListCommand::Push((Side::Right, Insertion::IfExists), key, Arity::One("kramer")))` |
| `set` | [`1a15a9e`] | `StringCommand::Set(Arity::One((key, "kramer")), None, Insertion::Always)` |

# Milestone: 0.2.0

- [ ] auth
- [ ] bitcount
- [ ] bitfield
- [ ] bitop
- [ ] bitpos
- [ ] bgrewriteaof
- [ ] bgsave
- [ ] brpoplpush
- [ ] bzpopmin
- [ ] bzpopmax
- [ ] discard
- [ ] dump
- [ ] eval
- [ ] evalsha
- [ ] exec
- [ ] expire
- [ ] expireat
- [ ] flushall
- [ ] flushdb
- [ ] geoadd
- [ ] geohash
- [ ] geopos
- [ ] geodist
- [ ] georadius
- [ ] georadiusbymember
- [ ] getbit
- [ ] getrange
- [ ] getset
- [ ] hincrbyfloat
- [ ] incrbyfloat
- [ ] info
- [ ] lastsave
- [ ] migrate
- [ ] move
- [ ] multi
- [ ] object
- [ ] persist
- [ ] pexpire
- [ ] pexpireat
- [ ] pfadd
- [ ] pfcount
- [ ] pfmerge
- [ ] ping
- [ ] psetex
- [ ] psubscribe
- [ ] pubsub
- [ ] pttl
- [ ] publish
- [ ] punsubscribe
- [ ] quit
- [ ] randomkey
- [ ] readonly
- [ ] readwrite
- [ ] rename
- [ ] renamenx
- [ ] restore
- [ ] role
- [ ] rpoplpush
- [ ] sadd
- [ ] save
- [ ] scard
- [ ] sdiff
- [ ] sdiffstore
- [ ] select
- [ ] setbit
- [ ] setrange
- [ ] shutdown
- [ ] sinter
- [ ] sinterstore
- [ ] sismember
- [ ] slaveof
- [ ] replicaof
- [ ] slowlog
- [ ] smembers
- [ ] smove
- [ ] sort
- [ ] spop
- [ ] srandmember
- [ ] srem
- [ ] strlen
- [ ] subscribe
- [ ] sunion
- [ ] sunionstore
- [ ] swapdb
- [ ] sync
- [ ] psync
- [ ] time
- [ ] touch
- [ ] ttl
- [ ] type
- [ ] unsubscribe
- [ ] unlink
- [ ] unwatch
- [ ] wait
- [ ] watch
- [ ] zadd
- [ ] zcard
- [ ] zcount
- [ ] zincrby
- [ ] zinterstore
- [ ] zlexcount
- [ ] zpopmax
- [ ] zpopmin
- [ ] zrange
- [ ] zrangebylex
- [ ] zrevrangebylex
- [ ] zrangebyscore
- [ ] zrank
- [ ] zrem
- [ ] zremrangebylex
- [ ] zremrangebyrank
- [ ] zremrangebyscore
- [ ] zrevrange
- [ ] zrevrangebyscore
- [ ] zrevrank
- [ ] zscore
- [ ] zunionstore
- [ ] scan
- [ ] sscan
- [ ] hscan
- [ ] zscan
- [ ] xinfo
- [ ] xadd
- [ ] xtrim
- [ ] xdel
- [ ] xrange
- [ ] xrevrange
- [ ] xlen
- [ ] xread
- [ ] xgroup
- [ ] xreadgroup
- [ ] xack
- [ ] xclaim
- [ ] xpending

# Milestone: 0.X.0

The following commands are not part of the roadmap for this library.

- [ ] command
- [ ] command count
- [ ] command getkeys
- [ ] command info
- [ ] config get
- [ ] config rewrite
- [ ] config set
- [ ] config resetstat
- [ ] dbsize
- [ ] debug object
- [ ] debug segfault
- [ ] client id
- [ ] client kill
- [ ] client list
- [ ] client getname
- [ ] client pause
- [ ] client reply
- [ ] client setname
- [ ] client unblock
- [ ] cluster addslots
- [ ] cluster bumpepoch
- [ ] cluster count-failure-reports
- [ ] cluster countkeysinslot
- [ ] cluster delslots
- [ ] cluster failover
- [ ] cluster flushslots
- [ ] cluster forget
- [ ] cluster getkeysinslot
- [ ] cluster info
- [ ] cluster keyslot
- [ ] cluster meet
- [ ] cluster myid
- [ ] cluster nodes
- [ ] cluster replicate
- [ ] cluster reset
- [ ] cluster saveconfig
- [ ] cluster set-config-epoch
- [ ] cluster setslot
- [ ] cluster slaves
- [ ] cluster replicas
- [ ] cluster slots
- [ ] script debug
- [ ] script exists
- [ ] script flush
- [ ] script kill
- [ ] script load
- [ ] latency doctor
- [ ] latency graph
- [ ] latency history
- [ ] latency latest
- [ ] latency reset
- [ ] latency help
- [ ] lolwut
- [ ] memory doctor
- [ ] memory help
- [ ] memory malloc-stats
- [ ] memory purge
- [ ] memory stats
- [ ] memory usage
- [ ] module list
- [ ] module load
- [ ] module unload
- [ ] monitor

# Exceptions

- [ ] `setex` - unlikely to implement; can be accomplished with `set`
- [ ] `setnx` - unlikely to implement; can be accomplished with `set`
- [ ] `hmset` - `hset` can do many

> This list was generated by running the following script in the chrome developer tools on the [command][command-li]
> list page of the official redis website:
>
> var items = Array.from(document.querySelectorAll('#commands li[data-name]'));
> copy(items.map(li => li.getAttribute('data-name')).join('\n'))
[command-li]: https://redis.io/commands


[`1a15a9e`]: https://github.com/sizethree/kramer/commit/1a15a9eb89f0c5a23bb4ad9e52f0082997e017a0
[`220d748`]: https://github.com/sizethree/kramer/commit/220d748
[`7b4f430`]: https://github.com/sizethree/kramer/commit/7b4f430
[`8e6cab7`]: https://github.com/sizethree/kramer/commit/8e6cab7076527f00efc59d39b3c5258e6cd3f404
[`9c23bf7`]: https://github.com/sizethree/kramer/commit/9c23bf7a4282a4803b96a41824d47a60b3c176b5
[`9ccd5fe`]: https://github.com/sizethree/kramer/commit/9ccd5fe6f17aa6a1839fafb75859ff1b3ad3a49d
[`9e08436`]: https://github.com/sizethree/kramer/commit/9e08436
[`a851137`]: https://github.com/sizethree/kramer/commit/a8511379c77b52f78e85e3f2d5a4dd94ef1cd84e
[`cd15162`]: https://github.com/sizethree/kramer/commit/cd1516296c31707bb9bc5878b3b323b1629ba692
[`d27df86`]: https://github.com/sizethree/kramer/commit/d27df866b9c62ce47b18980354b3fc145e0fb3a2
[`d51737e`]: https://github.com/sizethree/kramer/commit/d51737e2911d883bf26d1659fb3b6be6057594fb
[`ea58902`]: https://github.com/sizethree/kramer/commit/ea58902003a13a951d60d37b7b7705082af6ee36
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
@@ -0,0 +1,4 @@
## Contributing

This project is entirely open to help from the software community.
All pull requests and issues are welcome and be considered honestly.

0 comments on commit 5c98d4d

Please sign in to comment.