Bin Yang 545e6b6bb0 Add Notification Services and Notification Client Sidecar
Story: 2008529
Task: 41688

Signed-off-by: Bin Yang <bin.yang@windriver.com>
Change-Id: Ib276520605cc624a9976f804a1721ba2c5909403
2021-02-01 11:10:51 +08:00

87 lines
2.7 KiB
Python

import time, uuid
import logging
from sqlalchemy.orm import scoped_session, sessionmaker
from notificationclientsdk.model.orm.subscription import Subscription as SubscriptionOrm
from notificationclientsdk.repository.dbcontext import DbContext
LOG = logging.getLogger(__name__)
from notificationclientsdk.common.helpers import log_helper
log_helper.config_logger(LOG)
class SubscriptionRepo(DbContext):
def __init__(self, session=None, autocommit=False):
self.autocommit = autocommit
super(SubscriptionRepo, self).__init__(session)
if session:
self.own_session = False
else:
self.own_session = True
def __del__(self):
if self.own_session:
self.clear()
def add(self, subscription):
try:
subscription.SubscriptionId = str(uuid.uuid1())
subscription.Status = 1
subscription.CreateTime = time.time()
subscription.LastUpdateTime = subscription.CreateTime
subscription.UriLocation = "{0}/{1}".format(
subscription.UriLocation, subscription.SubscriptionId)
self.session.add(subscription)
except Exception as ex:
if self.autocommit:
self.rollback()
raise ex
else:
if self.autocommit:
self.commit()
return subscription
def update(self, subscriptionid, **data):
try:
data['LastUpdateTime'] = time.time()
self.session.query(SubscriptionOrm).filter_by(SubscriptionId=subscriptionid).update(data)
except Exception as ex:
if self.autocommit:
self.rollback()
raise ex
else:
if self.autocommit:
self.commit()
def get_one(self, **filter):
return self.session.query(SubscriptionOrm).filter_by(**filter).first()
def get(self, **filter):
return self.session.query(SubscriptionOrm).filter_by(**filter)
def delete_one(self, **filter):
try:
entry = self.session.query(SubscriptionOrm).filter_by(**filter).first()
self.session.delete(entry)
except Exception as ex:
if self.autocommit:
self.rollback()
raise ex
else:
if self.autocommit:
self.commit()
def delete(self, **filter):
try:
entry = self.session.query(SubscriptionOrm).filter_by(**filter).delete()
except Exception as ex:
if self.autocommit:
self.rollback()
raise ex
else:
if self.autocommit:
self.commit()