def insert_a_package(): p = Package() p.id = input("Package name: ") p.summary = input("Package summary: ") p.author_name = input("Author name: ") p.author_email = input("Author email: ") p.license = input("license: ") r1 = Release() print("Release 1: ") r1.major_ver = int(input('Major version:')) r1.minor_ver = int(input('Minor version:')) r1.build_ver = int(input('Build version:')) r1.size = 100_000 r2 = Release() print("Release 2: ") r2.major_ver = int(input('Major version:')) r2.minor_ver = int(input('Minor version:')) r2.build_ver = int(input('Build version:')) r2.size = 200_000 p.releases.append(r1) p.releases.append(r2) session = DbSession.factory() session.add(p) session.commit()
def find_package_by_name(package_name: str) -> Optional[Package]: session = DbSession.factory() # .options(subqueryload(Package.releases)) return session.query(Package) \ .filter(Package.id == package_name) \ .first()
def create_user(email: str, name: str, password: str) -> User: user = User() user.name = name user.email = email.lower().strip() user.hashed_password = hash_text(password) session = DbSession.factory() session.add(user) session.commit() return user
def migrate_users(): if MongoUser.objects().count(): return session = DbSession.factory() sql_users = session.query(SqlUser).all() for sut in sql_users: su: SqlUser = sut u = MongoUser() u.created_date = su.created_date u.hashed_password = su.hashed_password u.name = su.name u.email = su.email u.save()
def login_user(email: str, password: str) -> Optional[User]: if not email: return None email = email.lower().strip() session = DbSession.factory() user = session.query(User).filter(User.email == email).first() if not user: return None if not verify_hash(user.hashed_password, password): return None return user
def latest_releases(limit=10) -> List[Package]: session = DbSession.factory() releases = session.query(Release).order_by(Release.created_date.desc()).limit(limit * 2) packages_in_order = [r.package_id for r in releases] package_ids = {r.package_id for r in releases} # gives distict packages using set packages = {p.id: p for p in session.query(Package).filter(Package.id.in_(package_ids))} results = [] for r in releases: if len(results) >= limit: break results.append(packages[r.package_id]) return results
def migrate_releases(): if MongoRelease.objects().count(): return session = DbSession.factory() sql_releases = session.query(SqlRelease).all() for srp in sql_releases: sr: SqlRelease = srp r = MongoRelease() r.created_date = sr.created_date r.comment = sr.comment r.major_ver = sr.major_ver r.minor_ver = sr.minor_ver r.build_ver = sr.build_ver r.url = sr.url r.size = sr.size r.package_id = sr.package_id r.save()
def migrate_packages(): if MongoPackage.objects().count(): return session = DbSession.factory() sql_packages = session.query(SqlPackage).all() for sup in sql_packages: sp: SqlPackage = sup p = MongoPackage() p.id = sp.id p.created_date = sp.created_date p.summary = sp.summary p.description = sp.description p.home_page = sp.home_page p.docs_url = sp.docs_url p.package_url = sp.package_url p.author = sp.author_name p.author_email = sp.author_email p.license = sp.license p.maintainers = [] # Find, load, and copy over maintainer IDs. p.save()
def package_count() -> int: session = DbSession.factory() return session.query(Package).count()
def release_count() -> int: session = DbSession.factory() return session.query(Release).count()
def all_packages(limit: int) -> List[Package]: session = DbSession.factory() return list(session.query(Package).limit(limit))
def user_count() -> int: session = DbSession.factory() return session.query(User).count()
def find_user_by_id(user_id: int) -> Optional[User]: session = DbSession.factory() return session.query(User).filter(User.id == user_id).first()
def find_user_by_email(email: str) -> Optional[User]: session = DbSession.factory() return session.query(User).filter(User.email == email).first()