69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
from sqlalchemy import Column, String, TIMESTAMP, func, BIGINT, ARRAY
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy_utils.types.pg_composite import CompositeType
|
|
from sqlalchemy.ext.mutable import MutableList
|
|
|
|
Base = declarative_base()
|
|
|
|
CompositeType.cache_ok = False
|
|
|
|
comment_type = CompositeType(
|
|
'comment',
|
|
[
|
|
Column('content', String),
|
|
Column('ip', String),
|
|
Column('hash', String),
|
|
Column('created_at', TIMESTAMP),
|
|
Column("sha1", String)
|
|
]
|
|
)
|
|
|
|
|
|
# post
|
|
class SQLarticle(Base):
|
|
__tablename__ = 'posts'
|
|
|
|
id = Column(BIGINT, primary_key=True)
|
|
content = Column(String)
|
|
file_list = Column(ARRAY(String))
|
|
hash = Column(String)
|
|
comment_list = Column(MutableList.as_mutable(ARRAY(comment_type)))
|
|
|
|
|
|
# post metadata
|
|
class SQLmeta(Base):
|
|
__tablename__ = 'article_meta'
|
|
|
|
hash = Column(String, primary_key=True)
|
|
created_at = Column(TIMESTAMP(timezone=True), server_default=func.now())
|
|
igid = Column(String)
|
|
ip = Column(String)
|
|
|
|
|
|
# post mark
|
|
class SQLmark(Base):
|
|
__tablename__ = 'mark'
|
|
|
|
hash = Column(String, primary_key=True)
|
|
mark = Column(String)
|
|
|
|
|
|
# logs
|
|
class SQLlog(Base):
|
|
__tablename__ = 'logs'
|
|
|
|
id = Column(BIGINT, primary_key=True)
|
|
created_at = Column(TIMESTAMP(timezone=True), server_default=func.now())
|
|
message = Column(String)
|
|
source = Column(String)
|
|
|
|
|
|
# user
|
|
class SQLuser(Base):
|
|
__tablename__ = 'users'
|
|
|
|
id = Column(BIGINT, primary_key=True)
|
|
user = Column(String)
|
|
password = Column(String) # hash , sha512
|
|
permission = Column(ARRAY(String))
|