Source code for zlmdb.tests.orm._schema_fbs

###############################################################################
#
# The MIT License (MIT)
#
# Copyright (c) typedef int GmbH
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
###############################################################################

import random
import uuid
import datetime

from zlmdb.flatbuffers.demo import User as _user
from zlmdb.flatbuffers.demo import Date as _date


[docs] class User(object): def __init__(self, from_fbs=None):
[docs] self._from_fbs = from_fbs
[docs] self._name = None
[docs] self._authid = None
[docs] self._uuid = None
[docs] self._email = None
[docs] self._birthday = None
[docs] self._is_friendly = None
[docs] self._tags = None
[docs] self._ratings = None
[docs] self._ratings_cached = None
[docs] self._friends = None
[docs] self._friends_cached = None
[docs] self._referred_by = None
@property
[docs] def name(self): return self._name or self._from_fbs.Name()
@name.setter def name(self, value): self._name = value @property
[docs] def authid(self): return self._authid or self._from_fbs.Authid()
@authid.setter def authid(self, value): self._authid = value @property
[docs] def uuid(self): return self._uuid or self._from_fbs.Uuid()
@uuid.setter def uuid(self, value): self._uuid = value @property
[docs] def email(self): return self._email or self._from_fbs.Email()
@email.setter def email(self, value): self._email = value @property
[docs] def birthday(self): return self._birthday or self._from_fbs.Birthday()
@birthday.setter def birthday(self, value): self._birthday = value @property
[docs] def is_friendly(self): return self._is_friendly or self._from_fbs.IsFriendly()
@is_friendly.setter def is_friendly(self, value): self._is_friendly = value @property
[docs] def ratings(self): if self._ratings is not None: return self._ratings if self._ratings_cached is None: self._ratings_cached = {} if self._from_fbs: for i in range(self._from_fbs.RatingsLength()): rat = self._from_fbs.Ratings(i) self._ratings_cached[rat.Name()] = rat.Rating() return self._ratings_cached
@ratings.setter def ratings(self, value): self._ratings = value @property
[docs] def friends(self): if self._friends is not None: return self._friends if self._friends_cached is None: self._friends_cached = [] if self._from_fbs: for i in range(self._from_fbs.FriendsLength()): friend_oid = self._from_fbs.Friends(i) self._friends_cached.append(friend_oid) return self._friends_cached
@friends.setter def friends(self, value): self._friends = value @property
[docs] def referred_by(self): return self._referred_by or self._from_fbs.ReferredBy()
@referred_by.setter def referred_by(self, value): self._referred_by = value
[docs] def build(self, builder): if self._name is not None: name = builder.CreateString(self._name) else: name = builder.CreateString(self._from_fbs.Name()) if self._authid is not None: authid = builder.CreateString(self._authid) else: authid = builder.CreateString(self._from_fbs.Authid()) if self._email is not None: email = builder.CreateString(self._email) else: email = builder.CreateString(self._from_fbs.Email()) _user.UserStart(builder) _user.UserAddName(builder, name) _user.UserAddAuthid(builder, authid) _user.UserAddEmail(builder, email) if self._birthday is not None: _user.UserAddBirthday( builder, _date.CreateDate( builder, self._birthday.year, self._birthday.month, self._birthday.day, ), ) else: bd = self._from_fbs.Birthday() _user.UserAddBirthday( builder, _date.CreateDate(builder, bd.Year(), bd.Month(), bd.Day()) ) # FIXME: tags # FIXME: ratings # FIXME: friends if self._is_friendly is not None: _user.UserAddIsFriendly(builder, self._is_friendly) else: _user.UserAddIsFriendly(builder, self._from_fbs.IsFriendly()) if self._referred_by is not None: _user.UserAddReferredBy(builder, self._referred_by) else: _user.UserAddReferredBy(builder, self._from_fbs.ReferredBy()) return _user.UserEnd(builder)
@staticmethod
[docs] def cast(buf): return User(_user.User.GetRootAsUser(buf, 0))
@staticmethod
[docs] def create_test_user(oid=None): user = User() if oid is not None: user.oid = oid else: user.oid = random.randint(0, 9007199254740992) user.name = "Test {}".format(user.oid) user.authid = "test-{}".format(user.oid) user.uuid = uuid.uuid4() user.email = "{}@example.com".format(user.authid) user.birthday = datetime.date(1950, 12, 24) user.is_friendly = True user.tags = ["geek", "sudoko", "yellow"] for j in range(10): user.ratings["test-rating-{}".format(j)] = random.random() user.friends = [random.randint(0, 9007199254740992) for _ in range(10)] user.referred_by = random.randint(0, 9007199254740992) return user