blob: f7ecabaabe7f2d8fe489d5b950458782b0e3924f [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -04001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
npujar9a30c702019-11-14 17:06:39 +053016
Stephane Barbarie4a2564d2018-07-26 11:02:58 -040017package model
18
Stephane Barbarie7512fc82019-05-07 12:25:46 -040019import (
Stephane Barbarieef6650d2019-07-18 12:15:09 -040020 "context"
Stephane Barbarie802aca42019-05-21 12:19:28 -040021 "time"
npujar9a30c702019-11-14 17:06:39 +053022
serkant.uluderya2ae470f2020-01-21 11:13:09 -080023 "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
Stephane Barbarie7512fc82019-05-07 12:25:46 -040024)
25
npujar9a30c702019-11-14 17:06:39 +053026// Revision -
Stephane Barbarieec0919b2018-09-05 14:14:29 -040027type Revision interface {
Stephane Barbarie1ab43272018-12-08 21:42:13 -050028 Finalize(bool)
Stephane Barbarieec0919b2018-09-05 14:14:29 -040029 SetConfig(revision *DataRevision)
30 GetConfig() *DataRevision
Stephane Barbarie88fbe7f2018-09-25 12:25:23 -040031 Drop(txid string, includeConfig bool)
Stephane Barbarief7fc1782019-03-28 22:33:41 -040032 StorageDrop(txid string, includeConfig bool)
Stephane Barbarie40fd3b22019-04-23 21:50:47 -040033 ChildDrop(childType string, childHash string)
David Bainbridgebdae73c2019-10-23 17:05:41 +000034 ChildDropByName(childName string)
Stephane Barbarie3cb01222019-01-16 17:15:56 -050035 SetChildren(name string, children []Revision)
36 GetChildren(name string) []Revision
37 SetAllChildren(children map[string][]Revision)
38 GetAllChildren() map[string][]Revision
Stephane Barbarieec0919b2018-09-05 14:14:29 -040039 SetHash(hash string)
40 GetHash() string
41 ClearHash()
Stephane Barbarieef6650d2019-07-18 12:15:09 -040042 getVersion() int64
Stephane Barbariee0a4c792019-01-16 11:26:29 -050043 SetupWatch(key string)
Stephane Barbarief7fc1782019-03-28 22:33:41 -040044 SetName(name string)
45 GetName() string
Stephane Barbarieec0919b2018-09-05 14:14:29 -040046 SetBranch(branch *Branch)
47 GetBranch() *Branch
48 Get(int) interface{}
49 GetData() interface{}
npujar9a30c702019-11-14 17:06:39 +053050 getNode() *node
Stephane Barbarie802aca42019-05-21 12:19:28 -040051 SetLastUpdate(ts ...time.Time)
52 GetLastUpdate() time.Time
Thomas Lee Se5a44012019-11-07 20:32:24 +053053 LoadFromPersistence(ctx context.Context, path string, txid string, blobs map[string]*kvstore.KVPair) ([]Revision, error)
Stephane Barbarieef6650d2019-07-18 12:15:09 -040054 UpdateData(ctx context.Context, data interface{}, branch *Branch) Revision
55 UpdateChildren(ctx context.Context, name string, children []Revision, branch *Branch) Revision
Stephane Barbarieec0919b2018-09-05 14:14:29 -040056 UpdateAllChildren(children map[string][]Revision, branch *Branch) Revision
Stephane Barbarie4a2564d2018-07-26 11:02:58 -040057}