add PackageBase SQLAlchemy ORM model

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-05-30 16:38:16 -07:00
parent 822905be7d
commit a7e5498197
3 changed files with 103 additions and 0 deletions

View file

@ -1,5 +1,7 @@
import math
from sqlalchemy.orm import backref, relationship
import aurweb.config
import aurweb.util
@ -51,6 +53,11 @@ def make_random_value(table: str, column: str):
return string
def make_relationship(model, foreign_key, backref_):
return relationship(model, foreign_keys=[foreign_key],
backref=backref(backref_, lazy="dynamic"))
def query(model, *args, **kwargs):
return session.query(model).filter(*args, **kwargs)

View file

@ -0,0 +1,39 @@
from datetime import datetime
from sqlalchemy.orm import mapper
from aurweb.db import make_relationship
from aurweb.models.user import User
from aurweb.schema import PackageBases
class PackageBase:
def __init__(self, Name: str = None, Flagger: User = None,
Maintainer: User = None, Submitter: User = None,
Packager: User = None, **kwargs):
self.Name = Name
self.Flagger = Flagger
self.Maintainer = Maintainer
self.Submitter = Submitter
self.Packager = Packager
self.NumVotes = kwargs.get("NumVotes")
self.Popularity = kwargs.get("Popularity")
self.OutOfDateTS = kwargs.get("OutOfDateTS")
self.FlaggerComment = kwargs.get("FlaggerComment", str())
self.SubmittedTS = kwargs.get("SubmittedTS",
datetime.utcnow().timestamp())
self.ModifiedTS = kwargs.get("ModifiedTS",
datetime.utcnow().timestamp())
mapper(PackageBase, PackageBases, properties={
"Flagger": make_relationship(User, PackageBases.c.FlaggerUID,
"flagged_bases"),
"Submitter": make_relationship(User, PackageBases.c.SubmitterUID,
"submitted_bases"),
"Maintainer": make_relationship(User, PackageBases.c.MaintainerUID,
"maintained_bases"),
"Packager": make_relationship(User, PackageBases.c.PackagerUID,
"package_bases")
})