class User(BaseModel): user_id = columns.Text(primary_key=True) password = columns.Text(required=True) date_insert = columns.DateTime() first_name = columns.Text() last_name = columns.Text() params = columns.Map(columns.Text, columns.Text)
def test_instantiation_with_column_instance(self): """ Tests that columns instantiated with a column instance work properly """ column = columns.Map(columns.Text(min_length=100), columns.Integer()) assert isinstance(column.key_col, columns.Text) assert isinstance(column.value_col, columns.Integer)
class ThirdModel(Model): __table_name__ = 'first_model' first_key = columns.UUID(primary_key=True) second_key = columns.UUID() third_key = columns.Text() # removed fourth key, but it should stay in the DB blah = columns.Map(columns.Text, columns.Text)
class DailyClusterCounters(Model): __keyspace__ = config.get('cassandra', 'keyspace') __table_name__ = 'cluster_' + today.strftime('%m%d%Y') name = columns.Text(primary_key=True, partition_key=True) ts = columns.DateTime(primary_key=True) value = columns.Map(columns.Text, columns.BigInt) sample_id = columns.Text()
class FourthModel(Model): __table_name__ = 'first_model' first_key = columns.UUID(primary_key=True) second_key = columns.UUID() third_key = columns.Text() # removed fourth key, but it should stay in the DB renamed = columns.Map(columns.Text, columns.Text, db_field='blah')
class Events(Model): eventid = columns.Text(primary_key=True) url = columns.Text() title = columns.Text() description = columns.Text() start_time = columns.DateTime() stop_time = columns.DateTime() venue_id = columns.Text() venue_name = columns.Text() venue_address = columns.Text() city_name = columns.Text() region_name = columns.Text() postal_code = columns.Text() country_name = columns.Text() created = columns.DateTime() modified = columns.DateTime() links = columns.Map(columns.Text(), columns.Text()) categories = columns.Set(columns.Text()) tags = columns.Set(columns.Text()) images = columns.Set(columns.Text()) latitude = columns.Float() longitude = columns.Float() performers = columns.Set(columns.Text()) def __repr__(self): return '%s %s' % (self.eventid, self.title)
def test_instantiation_with_column_class(self): """ Tests that columns instantiated with a column class work properly and that the class is instantiated in the constructor """ column = columns.Map(columns.Text, columns.Integer) assert isinstance(column.key_col, columns.Text) assert isinstance(column.value_col, columns.Integer)
class TestQueryUpdateModel(Model): partition = columns.UUID(primary_key=True, default=uuid4) cluster = columns.Integer(primary_key=True) count = columns.Integer(required=False) text = columns.Text(required=False, index=True) text_set = columns.Set(columns.Text, required=False) text_list = columns.List(columns.Text, required=False) text_map = columns.Map(columns.Text, columns.Text, required=False)
class MfcSummary(Model): __keyspace__ = config.get('cassandra', 'keyspace') __table_name__ = "test" mfcid = columns.Text() ip = columns.Text() type = columns.Text() name = columns.Text() ts = columns.DateTime(primary_key=True) value = columns.Map(columns.Text, columns.BigInt)
class Contact(BaseModel): contact_id = columns.UUID(primary_key=True, default=uuid.uuid4) user_id = columns.Text(primary_key=True) first_name = columns.Text() last_name = columns.Text() date_insert = columns.DateTime() date_update = columns.DateTime() groups = columns.List(columns.Text) # Abstract everything else in a map infos = columns.Map(columns.Text, columns.Text)
def test_to_python(self): """ Tests that to_python of value column is called """ column = columns.Map(JsonTestColumn, JsonTestColumn) val = {1: 2, 3: 4, 5: 6} db_val = column.to_database(val) assert db_val.value == { json.dumps(k): json.dumps(v) for k, v in val.items() } py_val = column.to_python(db_val.value) assert py_val == val
class User(MBase): id = columns.Integer(primary_key=True) nick = columns.Text(required=True, index=True) extended = columns.Map(columns.Text, columns.Text) registered_at = columns.BigInt(default=unix_time(dt.utcnow())) created_at = columns.BigInt(default=unix_time(dt.utcnow())) def to_dict(self): return { 'id': self.id, 'nick': self.nick, 'properties': self.extended, }
class Story(MBase): """ A story is an event happened in the network. User A followed User B User A starred a project. User A posted a message. User A started a discussion User A mentioned User B in a post(message) - What to do for multiple mentions ? """ id = columns.BigInt(primary_key=True) actor = columns.Integer(partition_key=True) type = columns.Integer(required=True) target = columns.BigInt() payload = columns.Map(columns.Ascii, columns.Ascii) created_at = columns.BigInt(default=unix_time(dt.utcnow()))
class TestMapModel(Model): partition = columns.UUID(primary_key=True, default=uuid4) int_map = columns.Map(columns.Integer, columns.UUID, required=False) text_map = columns.Map(columns.Text, columns.DateTime, required=False)
class Post(MBase): id = columns.BigInt(index=True, primary_key=True) user_id = columns.Integer(required=True, index=True, partition_key=True) user_nick = columns.Text() text = columns.Text(required=True) html = columns.Text(required=False) reply_to_id = columns.BigInt() reply_to_uid = columns.Integer() reply_to_nick = columns.Text() ext_id = columns.Text() has_url = columns.Boolean() has_channel = columns.Boolean() # this post is either linked to a DISCUSSION or discussion_id = columns.BigInt() # CHANNEL or None channel_id = columns.Integer() spam = columns.Boolean(default=False) flagged = columns.Boolean(default=False) deleted = columns.Boolean(default=False) stats = columns.Map(columns.Ascii, columns.Integer) created_at = columns.BigInt(default=unix_time(dt.utcnow())) def to_dict(self): return {'id': unicode(self.id), 'text': self.text, 'html': self.html, 'user_id': self.user_id, 'reply_to_id': self.reply_to_id, 'reply_to_uid': self.reply_to_uid, 'reply_to_nick': self.reply_to_nick, 'discussion_id': unicode(self.discussion_id) if self.discussion_id is not None else "", 'discussion_name': unicode(self.discussion_name) if hasattr(self,"discussion_name") else "", 'discussion_slug': unicode(self.discussion_slug) if hasattr(self,"discussion_slug") else "", 'channel_id': self.channel_id, 'spam': self.spam, 'flagged': self.flagged, 'deleted': self.deleted, 'published_at': self.created_at, 'ago': self.ago, 'user': {'id': self.user_id, 'nick': self.user_nick}, 'stats': self.__dict__.get('statistics', {}), 'upvoted': self.__dict__.get('upvoted', False)} @property def ago(self): if self.created_at is None: return "some time ago" result = int(int(int(time.time() - self.created_at)) / 60.0) abb = "m" if result > (60 * 24): result /= (60 * 24) abb = "d" if result > 60: result /= 60 abb = "h" return "{}{} ago".format(result, abb)
class userprofile9(Model): uid = columns.Integer(primary_key=True) reviewerid = columns.Text() reviewername = columns.Text() numofreviews = columns.Float() ratings = columns.Map(columns.Text, columns.Float)
class testuserrepo(Model): username = columns.Text(primary_key=True) repo = columns.Map(columns.Text, columns.DateTime) def __repr__(self): return (self.username, self.repo)
class User(MBase): id = columns.Integer(primary_key=True) nick = columns.Text(required=True, index=True) follower_count = columns.Counter following_count = columns.Counter extended = columns.Map(columns.Text, columns.Text)
class TestCamelMapModel(Model): partition = columns.UUID(primary_key=True, default=uuid4) camelMap = columns.Map(columns.Text, columns.Integer, required=False)
class reviewerProfile(Model): reviewerID = columns.Text(primary_key=True) reviews = columns.Map(columns.Text, columns.Float)