# levelqueue Level queue is a simple queue golang library base on go-leveldb. [![Build Status](https://drone.gitea.com/api/badges/lunny/levelqueue/status.svg)](https://drone.gitea.com/lunny/levelqueue) [![](http://gocover.io/_badge/gitea.com/lunny/levelqueue)](http://gocover.io/gitea.com/lunny/levelqueue) [![](https://goreportcard.com/badge/gitea.com/lunny/levelqueue)](https://goreportcard.com/report/gitea.com/lunny/levelqueue) ## Installation ``` go get gitea.com/lunny/levelqueue ``` ## Usage ```Go queue, err := levelqueue.Open("./queue") err = queue.RPush([]byte("test")) // pop an element from left of the queue data, err = queue.LPop() // if handle success, element will be pop, otherwise it will be keep queue.LHandle(func(dt []byte) error{ return nil }) ``` You can now create a Set from a leveldb: ```Go set, err := levelqueue.OpenSet("./set") added, err:= set.Add([]byte("member1")) has, err := set.Has([]byte("member1")) members, err := set.Members() removed, err := set.Remove([]byte("member1")) ``` And you can create a UniqueQueue from a leveldb: ```Go queue, err := levelqueue.OpenUnique("./queue") err := queue.RPush([]byte("member1")) err = queue.LPush([]byte("member1")) // Will return ErrAlreadyInQueue // and so on. ``` ## Creating Queues, UniqueQueues and Sets from already open DB If you have an already open DB you can create these from this using the `NewQueue`, `NewUniqueQueue` and `NewSet` functions.