go-in-memory-db
go-in-memory-db copied to clipboard
MinHeap handlers and commands
minheap_handler.go
package actions
import (
"strconv"
)
func (a *Actions) mSetHandler() string {
k := a.StringArray[1]
a.Client.Dbpointer.CreateMinHeap(k)
return k
}
func (a *Actions) mExtractMinimumHandler() string {
k := a.StringArray[1]
heap, err := a.Client.Dbpointer.GetMinHeap(k)
if err != nil {
return "Minimum Heap Does not Exist"
}
if min, ok := heap.extractMin(); ok {
return min
}
return "Heap is empty"
}
func (a *Actions) mInsert() string {
k := a.StringArray[1]
n := a.StrongArray[2]
heap, err := a.Client.Dbpointer.GetMinHeap(k)
if err != nil {
return "Minimum Heap Does not Exist"
}
heap.insert(strconv.Atoi(n))
return "OK"
}
minheap_commands.go
These functions need to be included in the database interface
package databases
import (
"errors"
)
func (db *Database) CreateMinHeap(k string) (*minHeap.heap, error) {
if v, ok := db.dataMinHeap[k]; ok {
return v, errors.New("Minimum Heap Exists")
}
db.dataMinHeap[k] = minHeap.buildMinHeap()
return db.dataMinHeap[k], nil
}
func (db *Database) GetMinHeap(k string) (*minHeap.heap, error) {
if _, ok := db.dataMinHeap[k]; ok {
return db.dataMinHeap[k], nil
}
return nil, errors.New("not found")
}