Пример #1
0
class Guild(BaseModel):
    __schema__ = DictField(dict(
        name=StringField(required=True),
        guild_id=StringField(default=''),
    ))

    __indexes__ = [IndexModel('guild_id', unique=True)]
Пример #2
0
class Store(BaseModel):
    __schema__ = DictField(
        dict(name=StringField(required=True),
             about=StringField(default=''),
             item_list=ListField(default=[])))

    __indexes__ = [IndexModel('name', unique=True)]

    class InventoryAggregateManipulator(Manipulator):
        def transform_outgoing(self, doc, model):
            cur = Store.aggregate([{
                "$lookup": {
                    "from": "item",
                    "foreignField": "_id",
                    "localField": "item_list",
                    "as": "inventory"
                }
            }, {
                "$match": {
                    "_id": doc['_id']
                }
            }])
            for doc in cur:
                return doc

        def transform_incoming(self, doc, model, action):
            if 'inventory' in doc:
                del doc['inventory']
            return doc
Пример #3
0
class Item(BaseModel):
    __schema__ = DictField(
        dict(name=StringField(required=True),
             about=StringField(default=''),
             price=IntField(required=True),
             rate=IntField(default=60),
             payout=IntField(required=True)))

    __indexes__ = [IndexModel('name', unique=True)]
Пример #4
0
class Theme(Model):
    @classmethod
    def db(cls):
        return MongoClient(
            'mongodb+srv://123:[email protected]/deathteacherbot?retryWrites=true&w=majority'
        )['deathteacherbot']

    __schema__ = DictField(
        dict(url=StringField(required=False),
             content=StringField(required=False)))
class YOBModel(Model):
    """Dummy Mongo model"""
    @classmethod
    def db(cls):
        return MongoClient()['test_db']

    __schema__ = DictField(
        dict(yob=IntField(minimum=1900, maximum=2019, default=1990)))

    class AgeManipulator(Manipulator):
        def transform_outgoing(self, doc, model):
            doc['age'] = 2019 - doc['yob']
            return doc
Пример #6
0
class Professors(Model):
    @classmethod
    def db(cls):
        return MongoClient('mongodb+srv://123:[email protected]/deathMeetup?retryWrites=true&w=majority')['deathMeetup']

    __schema__ = DictField(dict(
        additionalInformation=ListField(required=False),
        fullName=StringField(required=True),
        urlImage=StringField(required=False),
        urlVideo=StringField(required=False),
        category=ObjectIDField(required=True),
        createdAt=StringField(required=True),
        deletedAt=StringField(required=False),
    ))
Пример #7
0
class User(Model):
    @classmethod
    def db(cls):
        return MongoClient(
            'mongodb+srv://123:[email protected]/deathteacherbot?retryWrites=true&w=majority'
        )['deathteacherbot']

    __schema__ = DictField(
        dict(email=StringField(required=True),
             names=StringField(required=True),
             password=StringField(required=True),
             firstname=StringField(required=True),
             secondname=StringField(required=True)))

    __indexes__ = [IndexModel('email', unique=True)]
Пример #8
0
class statements(Model):
    @classmethod
    def db(cls):
        return MongoClient(
            'mongodb+srv://123:[email protected]/deathteacherbot?retryWrites=true&w=majority'
        )['deathteacherbot']

    __schema__ = DictField(
        dict(id=StringField(required=False),
             text=StringField(required=False),
             search_text=StringField(required=False),
             conversation=StringField(required=False),
             persona=StringField(required=False),
             in_response_to=StringField(required=False),
             search_in_response_to=StringField(required=False),
             created_at=DateTimeField(required=False),
             tags=ListField(required=False)))
Пример #9
0
class AB(Model):
	__collection_name__ = 'ab_test'

	@classmethod
	def db(cls):
		return MongoClient()['the_test_db']

	__schema__ = DictField(dict(
		name=StringField(required=True),
		createdAt=DateTimeField(default=datetime.datetime.utcnow, required=True)
	))

	__indexes__ = ["name", "-createdAt"]

	class DummyManipulator(Manipulator):
		priority = 10

		def transform_outgoing(self, doc, model):
			doc['is_dummy'] = True
			return doc
Пример #10
0
class Events(Model):
    @classmethod
    def db(cls):
        return MongoClient(
            'mongodb+srv://123:[email protected]/deathMeetup?retryWrites=true&w=majority'
        )['deathMeetup']

    __schema__ = DictField(
        dict(
            title=StringField(required=True),
            description=StringField(required=True),
            urlImage=StringField(required=False),
            urlVideo=StringField(required=False),
            urlEvent=StringField(required=False),
            category=ObjectIDField(required=True),
            professor=ObjectIDField(required=True),
            releaseDate=StringField(required=True),
            createdAt=StringField(required=True),
            deletedAt=StringField(required=False),
        ))
Пример #11
0
class User(BaseModel):
    __schema__ = DictField(
        dict(user_id=StringField(required=True),
             name=StringField(required=True),
             discriminator=StringField(required=True),
             quote_to=StringField(default='USD'),
             price_list=DictField(dict(coins=ListField(default=[]))),
             item_list=ListField(default=[]),
             game=DictField(
                 dict(money=NumberField(default=config.economy.start_money),
                      in_pocket=NumberField(default=0),
                      portfolio=DictField(
                          dict(transactions=ListField(default=[]),
                               coins=ListField(default=[]))),
                      wage=NumberField(default=config.economy.start_wage),
                      total_wages=NumberField(default=0),
                      last_wage=DateTimeField(default=None),
                      created_at=DateTimeField(default=datetime.now())))))

    __indexes__ = [IndexModel('user_id', unique=True)]

    class InventoryAggregateManipulator(Manipulator):
        def transform_outgoing(self, doc, model):
            cur = User.aggregate([
                {
                    "$lookup": {
                        "from":
                        "item",
                        "let": {
                            "items": "$item_list"
                        },
                        "pipeline": [
                            {
                                "$match": {
                                    "$expr": {
                                        "$in": ["$_id", "$$items.id"]
                                    }
                                }
                            },
                            {
                                "$project": {
                                    "name": "$name",
                                    'rate': "$rate",
                                    "payout": "$payout"
                                }
                            },
                            # {"$addFields": {"last_run": "$$list_item.created_at"}}
                        ],
                        "as":
                        "inventory"
                    }
                },
                {
                    "$match": {
                        "_id": doc['_id']
                    }
                }
            ])
            for doc in cur:
                return doc

        def transform_incoming(self, doc, model, action):
            if 'inventory' in doc:
                del doc['inventory']
            return doc

    class RoundGameBalanceManipulator(Manipulator):
        def transform_outgoing(self, doc, model):
            if 'game' in doc:
                if 'money' in doc['game']:
                    doc['game']['money'] = float('{0:.6f}'.format(
                        doc['game']['money']))
                if 'in_pocket' in doc['game']:
                    doc['game']['in_pocket'] = float('{0:.6f}'.format(
                        doc['game']['in_pocket']))
            return doc