/*
* Copyright 2022-present Open Networking Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package database

import (
	"net"

	"voltha-go-controller/internal/pkg/of"
	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
)

var dbObj DBIntf

// DBIntf defines db related methods
type DBIntf interface {
	Get(key string) (string, error)
	Put(fullKeyPath string, value string) error
	Del(path string) error
	List(key string) (map[string]*kvstore.KVPair, error)
	DeleteAll(path string) error
	DeleteAllUnderHashKey(hashKeyPrefix string) error
	GetOlt(deviceID string) (string, error)
	PutOlt(deviceID string, value string) error
	DelOlt(deviceID string) error
	GetFlow(deviceID string, flowID uint64) (string, error)
	GetFlows(deviceID string) (map[string]*kvstore.KVPair, error)
	PutFlow(deviceID string, flowID uint64, value string) error
	DelFlow(deviceID string, flowID uint64) error
	PutGroup(deviceID string, groupID uint32, value string) error
	GetGroup(deviceID string, groupID uint32) (string, error)
	GetGroups(deviceID string) (map[string]*kvstore.KVPair, error)
	DelGroup(deviceID string, groupID uint32) error
	DelAllGroup(string) error
	DelAllPorts(deviceID string) error
	DelPort(deviceID string, portID uint32) error
	PutPort(deviceID string, portID uint32, value string) error
	GetPort(deviceID string, portID uint32) (string, error)
	GetPorts(deviceID string) (map[string]*kvstore.KVPair, error)
	PutDeviceMeter(deviceID string, meterID uint32, value string) error
	GetDeviceMeter(deviceID string, meterID uint32) (string, error)
	GetDeviceMeters(deviceID string) (map[string]*kvstore.KVPair, error)
	DelDeviceMeter(deviceID string, meterID uint32) error
	GetService(name string) (string, error)
	GetServices() (map[string]*kvstore.KVPair, error)
	PutService(name string, value string) error
	DelService(name string) error
	GetVnets() (map[string]*kvstore.KVPair, error)
	GetVnet(name string) (string, error)
	PutVnet(name string, value string) error
	DelVnet(name string) error
	GetVpvs() (map[string]*kvstore.KVPair, error)
	GetVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16) (string, error)
	PutVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16, value string) error
	DelVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16) error
	GetMvlans() (map[string]*kvstore.KVPair, error)
	GetMvlan(mvlan uint16) (string, error)
	PutMvlan(mvlan uint16, value string) error
	DelMvlan(mvlan uint16) error
	DelIGMPCfg() error
	GetHealth() (string, error)
	PutHealth(value string) error
	DelHealth() error
	GetMeters() (map[string]*kvstore.KVPair, error)
	GetMeter(name string) (string, error)
	PutMeter(name string, value string) error
	DelMeter(name string) error
	DelAllMeter(device string) error
	GetIgmpGroups() (map[string]*kvstore.KVPair, error)
	GetIgmpGroup(id string) (string, error)
	PutIgmpGroup(id string, value string) error
	DelIgmpGroup(id string) error
	GetAllIgmpDevices() (map[string]*kvstore.KVPair, error)
	GetPrevIgmpDevices(mvlan of.VlanType, gid string) (map[string]*kvstore.KVPair, error)
	GetIgmpDevices(mvlan of.VlanType, gid string, gip net.IP) (map[string]*kvstore.KVPair, error)
	GetIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string) (string, error)
	PutIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string, value string) error
	DelIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string) error
	GetAllIgmpChannels() (map[string]*kvstore.KVPair, error)
	GetPrevIgmpChannels(gname string, device string) (map[string]*kvstore.KVPair, error)
	GetIgmpChannels(mvlan of.VlanType, gname string, device string) (map[string]*kvstore.KVPair, error)
	GetIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP) (string, error)
	PutIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP, value string) error
	DelIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP) error
	GetAllIgmpRcvrs() (map[string]*kvstore.KVPair, error)
	GetPrevIgmpRcvrs(gip net.IP, device string) (map[string]*kvstore.KVPair, error)
	GetIgmpRcvrs(mvlan of.VlanType, gip net.IP, device string) (map[string]*kvstore.KVPair, error)
	GetIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string) (string, error)
	PutIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string, value string) error
	DelIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string) error
	DelAllIgmpRcvr(mvlan of.VlanType, gip net.IP, device string) error
	DelAllRoutesForDevice(device string) error
	DelNbDevicePort(device string, ponPortID uint32)
	GetAllNbPorts(deviceID string) (map[string]*kvstore.KVPair, error)
	GetMigrationInfo() (string, error)
	PutMigrationInfo(value string) error
	DelMigrationInfo() error
	GetAllPonCounters(device string) (map[string]*kvstore.KVPair, error)
	GetPonCounter(device string, ponID string) (string, error)
	PutPonCounter(device string, ponID string, value string) error
	DelPonCounter(device string, ponID string) error
	GetAllPonChannelCounters(device string, ponID string) (map[string]*kvstore.KVPair, error)
	GetPonChannelCounter(device string, ponID string, channel string) (string, error)
	PutNbDevicePort(device string, ponPortID uint32, value string)
	PutPonChannelCounter(device string, ponID string, channel string, value string) error
	DelPonChannelCounter(device string, ponID string, channel string) error
	DelAllPONCounters(device string) error
	DelPONCounters(device string, ponID string)
	GetAllServiceChannelCounters(serviceName string) (map[string]*kvstore.KVPair, error)
	GetServiceChannelCounter(serviceName string, channel string) (string, error)
	PutServiceChannelCounter(serviceName string, channel string, value string) error
	DelServiceChannelCounter(serviceName string, channel string) error
	DelAllServiceChannelCounter(serviceName string) error
	PutOltIgmpCounters(device string, value string) error
	GetOltIgmpCounter(device string) (string, error)
	PutFlowHash(deviceID string, value string) error
	GetFlowHash(deviceID string) (string, error)
	OltExists(deviceID string) bool
	GetIgmpProfiles() (map[string]*kvstore.KVPair, error)
	GetIgmpProfile(name string) (string, error)
	PutIgmpProfile(name string, value string) error
	DelIgmpProfile(name string) error
	GetMcastConfigs() (map[string]*kvstore.KVPair, error)
	GetMcastConfig(name string) (string, error)
	PutMcastConfig(name string, value string) error
	DelMcastConfig(name string) error
	PutPortAlarmProfile(portAlarmProfileID string, value string)
	GetPortAlarmProfile(portAlarmProfileID string) (map[string]*kvstore.KVPair, error)
	DelPortAlarmProfile(portAlarmProfileID string)
	PutPortAlarmData(deviceID string, portID uint32, value string)
	GetPortAlarmData(deviceID string, portID uint32) (string, error)
	DelPortAlarmData(deviceID string, portID uint32)
	GetAllPortAlarmData(deviceID string) (map[string]*kvstore.KVPair, error)
	PutSubAlarmData(deviceID string, portName string, value string)
	GetSubAlarmData(deviceID string, portName string) (string, error)
	DelSubAlarmData(deviceID string, portName string)
	GetAllSubAlarmData(deviceID string) (map[string]*kvstore.KVPair, error)
	PutMigrateServicesReq(deviceID string, vlan string, value string) error
	GetMigrateServicesReq(deviceID string, vlan string) (string, error)
	GetAllMigrateServicesReq(deviceID string) (map[string]*kvstore.KVPair, error)
	DelMigrateServicesReq(deviceID string, vlan string) error
	DelAllMigrateServicesReq(deviceID string) error
}

//GetDatabase - returns databse operation based on configuration
func GetDatabase() DBIntf {
	return dbObj
}

//SetDatabase - sets the DB object based on the type
func SetDatabase(df DBIntf) {
	dbObj = df
}
