Files
KintoneAppBuilder/backend/app/db/models.py

236 lines
8.7 KiB
Python

from sqlalchemy import Boolean, Column, Integer, String, DateTime,ForeignKey,Table
from sqlalchemy.orm import Mapped,relationship,as_declarative,mapped_column
from datetime import datetime
from app.db.session import Base
from app.core.security import chacha20Decrypt
@as_declarative()
class Base:
id = Column(Integer, primary_key=True, index=True)
create_time = Column(DateTime, default=datetime.now)
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now)
userrole = Table(
"userrole",
Base.metadata,
Column("userid",Integer,ForeignKey("user.id")),
Column("roleid",Integer,ForeignKey("role.id")),
)
rolepermission = Table(
"rolepermission",
Base.metadata,
Column("roleid",Integer,ForeignKey("role.id")),
Column("permissionid",Integer,ForeignKey("permission.id")),
)
class User(Base):
__tablename__ = "user"
email = mapped_column(String(50), unique=True, index=True, nullable=False)
first_name = mapped_column(String(100))
last_name = mapped_column(String(100))
hashed_password = mapped_column(String(200), nullable=False)
is_active = mapped_column(Boolean, default=True)
is_superuser = mapped_column(Boolean, default=False)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
roles = relationship("Role",secondary=userrole,back_populates="users")
class Role(Base):
__tablename__ = "role"
name = mapped_column(String(100))
description = mapped_column(String(255))
level = mapped_column(Integer)
users = relationship("User",secondary=userrole,back_populates="roles")
permissions = relationship("Permission",secondary=rolepermission,back_populates="roles")
class Permission(Base):
__tablename__ = "permission"
menu = mapped_column(String(100))
function = mapped_column(String(255))
privilege = mapped_column(String(100))
roles = relationship("Role",secondary=rolepermission,back_populates="permissions")
class App(Base):
__tablename__ = "app"
domainurl = mapped_column(String(200), nullable=False)
appname = mapped_column(String(200), nullable=False)
appid = mapped_column(String(100), index=True, nullable=False)
version = mapped_column(Integer)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
class AppVersion(Base):
__tablename__ = "appversion"
domainurl = mapped_column(String(200), nullable=False)
appname = mapped_column(String(200), nullable=False)
appid = mapped_column(String(100), index=True, nullable=False)
version = mapped_column(Integer)
versionname = mapped_column(String(200), nullable=False)
comment = mapped_column(String(200), nullable=False)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
class AppSetting(Base):
__tablename__ = "appsetting"
appid = mapped_column(String(100), index=True, nullable=False)
setting = mapped_column(String(1000))
class Kintone(Base):
__tablename__ = "kintone"
type = mapped_column(Integer, index=True, nullable=False)
name = mapped_column(String(100), nullable=False)
desc = mapped_column(String)
content = mapped_column(String)
class Action(Base):
__tablename__ = "action"
name = mapped_column(String(100), index=True, nullable=False)
title = mapped_column(String(200))
subtitle = mapped_column(String(500))
outputpoints = mapped_column(String)
property = mapped_column(String)
categoryid = mapped_column(Integer,ForeignKey("category.id"))
nosort = mapped_column(Integer)
class Flow(Base):
__tablename__ = "flow"
flowid = mapped_column(String(100), index=True, nullable=False)
appid = mapped_column(String(100), index=True, nullable=False)
eventid = mapped_column(String(100), index=True, nullable=False)
domainurl = mapped_column(String(200))
name = mapped_column(String(200))
content = mapped_column(String)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
class FlowHistory(Base):
__tablename__ = "flowhistory"
flowid = mapped_column(String(100), index=True, nullable=False)
appid = mapped_column(String(100), index=True, nullable=False)
eventid = mapped_column(String(100), index=True, nullable=False)
domainurl = mapped_column(String(200))
name = mapped_column(String(200))
content = mapped_column(String)
version = mapped_column(Integer)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
class Tenant(Base):
__tablename__ = "tenant"
tenantid = mapped_column(String(100), index=True, nullable=False)
name = mapped_column(String(200))
licence = mapped_column(String(200))
startdate = mapped_column(DateTime)
enddate = mapped_column(DateTime)
class Domain(Base):
__tablename__ = "domain"
tenantid = mapped_column(String(100), index=True, nullable=False)
name = mapped_column(String(100), nullable=False)
url = mapped_column(String(200), nullable=False)
kintoneuser = mapped_column(String(100), nullable=False)
kintonepwd = mapped_column(String(100), nullable=False)
is_active = mapped_column(Boolean, default=True)
def decrypt_kintonepwd(self):
decrypted_pwd = chacha20Decrypt(self.kintonepwd)
return decrypted_pwd
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
ownerid = mapped_column(Integer,ForeignKey("user.id"))
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
owner = relationship('User',foreign_keys=[ownerid])
class UserDomain(Base):
__tablename__ = "userdomain"
userid = mapped_column(Integer,ForeignKey("user.id"))
domainid = mapped_column(Integer,ForeignKey("domain.id"))
is_default = mapped_column(Boolean, default=False)
createuserid = mapped_column(Integer,ForeignKey("user.id"))
updateuserid = mapped_column(Integer,ForeignKey("user.id"))
domain = relationship("Domain")
user = relationship("User",foreign_keys=[userid])
createuser = relationship('User',foreign_keys=[createuserid])
updateuser = relationship('User',foreign_keys=[updateuserid])
class Event(Base):
__tablename__ = "event"
category = mapped_column(String(100), nullable=False)
type = mapped_column(String(100), nullable=False)
eventid= mapped_column(String(100), nullable=False)
function = mapped_column(String(500), nullable=False)
mobile = mapped_column(Boolean, default=False)
eventgroup = mapped_column(Boolean, default=False)
class EventAction(Base):
__tablename__ = "eventaction"
eventid = mapped_column(String(100),ForeignKey("event.eventid"))
actionid = mapped_column(Integer,ForeignKey("action.id"))
class ErrorLog(Base):
__tablename__ = "errorlog"
title = mapped_column(String(50))
location = mapped_column(String(500))
content = mapped_column(String(5000))
class OperationLog(Base):
__tablename__ = "operationlog"
tenantid = mapped_column(String(100))
domainurl = mapped_column(String(200))
userid = mapped_column(Integer,ForeignKey("user.id"))
operation = mapped_column(String(200))
function = mapped_column(String(200))
detail = mapped_column(String(200))
user = relationship('User')
class KintoneFormat(Base):
__tablename__ = "kintoneformat"
name = mapped_column(String(50))
startrow =mapped_column(Integer)
startmapped_column =mapped_column(Integer)
typemapped_column =mapped_column(Integer)
codemapped_column =mapped_column(Integer)
field = mapped_column(String(5000))
trueformat = mapped_column(String(10))
class Category(Base):
__tablename__ = "category"
categoryname = mapped_column(String(20))
nosort = mapped_column(Integer)