from api.models.cmdb import InnerKV


class InnerKVManger(object):
    def __init__(self):
        pass

    @classmethod
    def add(cls, key, value):
        data = {"key": key, "value": value}
        res = InnerKV.create(**data)
        if res.key == key:
            return "success", True

        return "add failed", False

    @classmethod
    def get(cls, key):
        res = InnerKV.get_by(first=True, to_dict=False, key=key)
        if not res:
            return None

        return res.value

    @classmethod
    def update(cls, key, value):
        res = InnerKV.get_by(first=True, to_dict=False, key=key)
        if not res:
            return cls.add(key, value)

        t = res.update(value=value)
        if t.key == key:
            return "success", True

        return "update failed", True