new-version-0-2-13
Some checks failed
deploy / deploy (push) Failing after 1m54s

This commit is contained in:
2023-11-03 13:10:22 +03:00
parent 1f5e5472c9
commit 435d1e4505
21 changed files with 392 additions and 436 deletions

View File

@@ -2,8 +2,9 @@ from services.db import Base, engine
from orm.shout import Shout
from orm.community import Community
def init_tables():
Base.metadata.create_all(engine)
Community.init_table()
Shout.init_table()
Community.init_table()
print("[orm] tables initialized")

View File

@@ -1,6 +1,6 @@
from datetime import datetime
import time
from sqlalchemy import JSON as JSONType
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from services.db import Base
@@ -13,10 +13,6 @@ class AuthorRating(Base):
author = Column(ForeignKey("author.id"), primary_key=True, index=True)
value = Column(Integer)
@staticmethod
def init_table():
pass
class AuthorFollower(Base):
__tablename__ = "author_follower"
@@ -24,23 +20,25 @@ class AuthorFollower(Base):
id = None # type: ignore
follower = Column(ForeignKey("author.id"), primary_key=True, index=True)
author = Column(ForeignKey("author.id"), primary_key=True, index=True)
createdAt = Column(DateTime, nullable=False, default=datetime.now)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
auto = Column(Boolean, nullable=False, default=False)
class Author(Base):
__tablename__ = "author"
user = Column(String, nullable=False) # unbounded link with authorizer's User type
bio = Column(String, nullable=True, comment="Bio") # status description
about = Column(String, nullable=True, comment="About") # long and formatted
pic = Column(String, nullable=True, comment="Userpic")
user = Column(String, unique=True) # unbounded link with authorizer's User type
name = Column(String, nullable=True, comment="Display name")
slug = Column(String, unique=True, comment="Author's slug")
createdAt = Column(DateTime, nullable=False, default=datetime.now)
lastSeen = Column(DateTime, nullable=False, default=datetime.now) # Td se 0e
deletedAt = Column(DateTime, nullable=True, comment="Deleted at")
bio = Column(String, nullable=True, comment="Bio") # status description
about = Column(String, nullable=True, comment="About") # long and formatted
pic = Column(String, nullable=True, comment="Picture")
links = Column(JSONType, nullable=True, comment="Links")
ratings = relationship(AuthorRating, foreign_keys=AuthorRating.author)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
last_seen = Column(Integer, nullable=False, default=lambda: int(time.time()))
updated_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
deleted_at = Column(Integer, nullable=True, comment="Deleted at")

View File

@@ -1,5 +1,5 @@
from datetime import datetime
from sqlalchemy import Column, DateTime, ForeignKey, String
import time
from sqlalchemy import Column, Integer, ForeignKey, String
from services.db import Base
@@ -18,6 +18,6 @@ class Collection(Base):
title = Column(String, nullable=False, comment="Title")
body = Column(String, nullable=True, comment="Body")
pic = Column(String, nullable=True, comment="Picture")
createdAt = Column(DateTime, default=datetime.now, comment="Created At")
createdBy = Column(ForeignKey("author.id"), comment="Created By")
publishedAt = Column(DateTime, default=datetime.now, comment="Published At")
created_at = Column(Integer, default=lambda: int(time.time()))
created_by = Column(ForeignKey("author.id"), comment="Created By")
published_at = Column(Integer, default=lambda: int(time.time()))

View File

@@ -1,5 +1,5 @@
from datetime import datetime
from sqlalchemy import Column, String, ForeignKey, DateTime
import time
from sqlalchemy import Column, String, ForeignKey, Integer
from sqlalchemy.orm import relationship
from services.db import Base, local_session
@@ -12,7 +12,7 @@ class CommunityAuthor(Base):
id = None # type: ignore
follower = Column(ForeignKey("author.id"), primary_key=True)
community = Column(ForeignKey("community.id"), primary_key=True)
joinedAt = Column(DateTime, nullable=False, default=datetime.now)
joined_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
role = Column(String, nullable=False)
@@ -23,17 +23,16 @@ class Community(Base):
slug = Column(String, nullable=False, unique=True)
desc = Column(String, nullable=False, default="")
pic = Column(String, nullable=False, default="")
createdAt = Column(DateTime, nullable=False, default=datetime.now)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
authors = relationship(lambda: Author, secondary=CommunityAuthor.__tablename__, nullable=True)
authors = relationship(lambda: Author, secondary=CommunityAuthor.__tablename__)
@staticmethod
def init_table():
with local_session() as session:
d = (session.query(Community).filter(Community.slug == "discours").first())
d = session.query(Community).filter(Community.slug == "discours").first()
if not d:
d = Community.create(name="Дискурс", slug="discours")
session.add(d)
session.commit()
print("[orm] created community %s" % d.slug)
Community.default_community = d
print('[orm] default community id: %s' % d.id)
print("[orm] default community is %s" % d.slug)

View File

@@ -1,7 +1,7 @@
from datetime import datetime
from enum import Enum as Enumeration
from sqlalchemy import Column, DateTime, Enum, ForeignKey, String
from sqlalchemy import Column, Integer, Enum, ForeignKey, String
from services.db import Base
import time
class ReactionKind(Enumeration):
@@ -26,13 +26,12 @@ class Reaction(Base):
__tablename__ = "reaction"
body = Column(String, nullable=True, comment="Reaction Body")
createdAt = Column(DateTime, nullable=False, default=datetime.now)
createdBy = Column(ForeignKey("author.id"), nullable=False, index=True)
updatedAt = Column(DateTime, nullable=True, comment="Updated at")
updatedBy = Column(ForeignKey("author.id"), nullable=True, index=True)
deletedAt = Column(DateTime, nullable=True, comment="Deleted at")
deletedBy = Column(ForeignKey("author.id"), nullable=True, index=True)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
created_by = Column(ForeignKey("author.id"), nullable=False, index=True)
updated_at = Column(Integer, nullable=True, comment="Updated at")
deleted_at = Column(Integer, nullable=True, comment="Deleted at")
deleted_by = Column(ForeignKey("author.id"), nullable=True, index=True)
shout = Column(ForeignKey("shout.id"), nullable=False, index=True)
replyTo = Column(ForeignKey("reaction.id"), nullable=True)
range = Column(String, nullable=True, comment="<start index>:<end>")
reply_to = Column(ForeignKey("reaction.id"), nullable=True)
quote = Column(String, nullable=True, comment="a quoted fragment")
kind = Column(Enum(ReactionKind), nullable=False)

View File

@@ -1,10 +1,9 @@
from datetime import datetime
import time
from enum import Enum as Enumeration
from sqlalchemy import (
Enum,
Boolean,
Column,
DateTime,
ForeignKey,
Integer,
String,
@@ -33,10 +32,8 @@ class ShoutReactionsFollower(Base):
follower = Column(ForeignKey("author.id"), primary_key=True, index=True)
shout = Column(ForeignKey("shout.id"), primary_key=True, index=True)
auto = Column(Boolean, nullable=False, default=False)
createdAt = Column(
DateTime, nullable=False, default=datetime.now, comment="Created at"
)
deletedAt = Column(DateTime, nullable=True)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
deleted_at = Column(Integer, nullable=True)
class ShoutAuthor(Base):
@@ -65,13 +62,13 @@ class ShoutVisibility(Enumeration):
class Shout(Base):
__tablename__ = "shout"
createdAt = Column(DateTime, nullable=False, default=datetime.now)
updatedAt = Column(DateTime, nullable=True)
publishedAt = Column(DateTime, nullable=True)
deletedAt = Column(DateTime, nullable=True)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
updated_at = Column(Integer, nullable=True)
published_at = Column(Integer, nullable=True)
deleted_at = Column(Integer, nullable=True)
createdBy = Column(ForeignKey("author.id"), comment="Created By")
deletedBy = Column(ForeignKey("author.id"), nullable=True)
created_by = Column(ForeignKey("author.id"), comment="Created By")
deleted_by = Column(ForeignKey("author.id"), nullable=True)
body = Column(String, nullable=False, comment="Body")
slug = Column(String, unique=True)
@@ -85,21 +82,17 @@ class Shout(Base):
authors = relationship(lambda: Author, secondary=ShoutAuthor.__tablename__)
topics = relationship(lambda: Topic, secondary=ShoutTopic.__tablename__)
communities = relationship(
lambda: Community, secondary=ShoutCommunity.__tablename__
)
communities = relationship(lambda: Community, secondary=ShoutCommunity.__tablename__)
reactions = relationship(lambda: Reaction)
viewsOld = Column(Integer, default=0)
viewsAckee = Column(Integer, default=0)
views = column_property(viewsOld + viewsAckee)
views_old = Column(Integer, default=0)
views_ackee = Column(Integer, default=0)
views = column_property(views_old + views_ackee)
visibility = Column(Enum(ShoutVisibility), default=ShoutVisibility.AUTHORS)
# TODO: these field should be used or modified
lang = Column(String, nullable=False, default="ru", comment="Language")
mainTopic = Column(ForeignKey("topic.slug"), nullable=True)
versionOf = Column(ForeignKey("shout.id"), nullable=True)
version_of = Column(ForeignKey("shout.id"), nullable=True)
oid = Column(String, nullable=True)
@staticmethod
@@ -114,5 +107,3 @@ class Shout(Base):
"lang": "ru",
}
s = Shout.create(**entry)
session.add(s)
session.commit()

View File

@@ -1,5 +1,5 @@
from datetime import datetime
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String
import time
from sqlalchemy import Boolean, Column, Integer, ForeignKey, String
from services.db import Base
@@ -9,7 +9,7 @@ class TopicFollower(Base):
id = None # type: ignore
follower = Column(ForeignKey("author.id"), primary_key=True, index=True)
topic = Column(ForeignKey("topic.id"), primary_key=True, index=True)
createdAt = Column(DateTime, nullable=False, default=datetime.now)
created_at = Column(Integer, nullable=False, default=lambda: int(time.time()))
auto = Column(Boolean, nullable=False, default=False)