Add the rest of the project

This commit is contained in:
Andrew 2023-03-20 18:38:45 +07:00
parent 6a2109ce3d
commit 49f2d8e924
6 changed files with 1080 additions and 0 deletions

137
db_models.py Normal file
View file

@ -0,0 +1,137 @@
import enum
from based.columns import (
PrimarySerialColumnDefinition,
TextColumnDefinition,
IntegerColumnDefinition,
make_column_unique,
)
from pydantic import BaseModel
class AccessType(enum.Enum):
READ = "read"
WRITE = "write"
READ_WRITE = "read_write"
NONE = "none"
META_INFO_TABLE_NAME = "meta_info"
META_INFO_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
make_column_unique(TextColumnDefinition("name")),
TextColumnDefinition("value"),
TextColumnDefinition("allowed_columns", default="*"),
]
class MetaInfo(BaseModel):
id: int
name: str
value: str
allowed_columns: str
USER_GROUP_TABLE_NAME = "user_group"
USER_GROUP_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
make_column_unique(TextColumnDefinition("name")),
TextColumnDefinition("description", default=""),
]
class UserGroup(BaseModel):
id: int
name: str
description: str
USERS_TABLE_NAME = "users"
USERS_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
make_column_unique(TextColumnDefinition("username")),
TextColumnDefinition("password"),
TextColumnDefinition("access_token"),
]
class User(BaseModel):
id: int
username: str
password: str
access_token: str
def to_dict(self, safe=True):
d = {
"id": self.id,
"username": self.username,
}
if not safe:
d["access_token"] = self.access_token
d["password"] = self.password
return d
USER_IN_USER_GROUP_JOIN_TABLE_NAME = "user_in_user_group"
USER_IN_USER_GROUP_JOIN_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
IntegerColumnDefinition("user_id"),
IntegerColumnDefinition("user_group_id"),
]
class UserInUserGroup(BaseModel):
id: int
user_id: int
user_group_id: int
TABLE_ACCESS_TABLE_NAME = "table_access"
TABLE_ACCESS_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
IntegerColumnDefinition("user_group_id"),
TextColumnDefinition("table_name"),
TextColumnDefinition("access_type"),
TextColumnDefinition("allowed_columns", default="*"),
]
class TableAccess(BaseModel):
id: int
user_group_id: int
table_name: str
access_type: str
allowed_columns: str
ASSETS_TABLE_NAME = "assets"
ASSETS_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
TextColumnDefinition("name"),
TextColumnDefinition("description", default=""),
TextColumnDefinition("fid"),
TextColumnDefinition("catalog", default="/root"),
]
class Asset(BaseModel):
id: int
name: str
description: str
fid: str
catalog: str
ASSET_ACCESS_TABLE_NAME = "asset_access"
ASSET_ACCESS_TABLE_SCHEMA = [
PrimarySerialColumnDefinition("id"),
IntegerColumnDefinition("user_group_id"),
IntegerColumnDefinition("asset_id"),
TextColumnDefinition("access_type"),
]
class AssetAccess(BaseModel):
id: int
user_group_id: int
asset_id: int
access_type: str