go-in-memory-db icon indicating copy to clipboard operation
go-in-memory-db copied to clipboard

MinHeap handlers and commands

Open aramzes opened this issue 5 years ago • 0 comments

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")
}

aramzes avatar Sep 25 '19 09:09 aramzes