mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: init install + cleanup code
This commit is contained in:
parent
2485285a06
commit
38288e8a57
28 changed files with 310 additions and 583 deletions
|
|
@ -1,7 +1,6 @@
|
|||
from typing import Literal, Optional
|
||||
from click import Option
|
||||
from typing import Optional
|
||||
from sqlalchemy import JSON, Column
|
||||
from sqlmodel import Field, Session, SQLModel, create_engine, select
|
||||
from sqlmodel import Field, SQLModel
|
||||
from enum import Enum
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
from enum import Enum
|
||||
|
||||
class ChapterActivity(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from typing import List, Optional
|
||||
from pydantic import BaseModel
|
||||
from sqlmodel import Field, SQLModel
|
||||
from src.db.activities import Activity, ActivityRead, ActivityUpdate
|
||||
from src.db.activities import ActivityRead
|
||||
|
||||
|
||||
class ChapterBase(SQLModel):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
from enum import Enum
|
||||
|
||||
class CourseChapter(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
|
|
|
|||
31
apps/api/src/db/install.py
Normal file
31
apps/api/src/db/install.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from typing import Optional
|
||||
from sqlalchemy import JSON, Column
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class InstallBase(SQLModel):
|
||||
step: int = Field(default=0)
|
||||
data: dict = Field(default={}, sa_column=Column(JSON))
|
||||
|
||||
|
||||
class Install(InstallBase, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
install_uuid: str = Field(default=None)
|
||||
creation_date: str = ""
|
||||
update_date: str = ""
|
||||
|
||||
|
||||
class InstallCreate(InstallBase):
|
||||
pass
|
||||
|
||||
|
||||
class InstallUpdate(InstallBase):
|
||||
pass
|
||||
|
||||
|
||||
class InstallRead(InstallBase):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
install_uuid: str = Field(default=None)
|
||||
creation_date: str
|
||||
update_date: str
|
||||
pass
|
||||
|
|
@ -1,19 +1,46 @@
|
|||
from enum import Enum
|
||||
from typing import Optional
|
||||
from typing import Optional, Union
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import JSON, Column
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
# Rights
|
||||
class Permission(BaseModel):
|
||||
action_create: bool
|
||||
action_read: bool
|
||||
action_update: bool
|
||||
action_delete: bool
|
||||
|
||||
def __getitem__(self, item):
|
||||
return getattr(self, item)
|
||||
|
||||
|
||||
class Rights(BaseModel):
|
||||
courses: Permission
|
||||
users: Permission
|
||||
collections: Permission
|
||||
organizations: Permission
|
||||
coursechapters: Permission
|
||||
activities: Permission
|
||||
|
||||
def __getitem__(self, item):
|
||||
return getattr(self, item)
|
||||
|
||||
|
||||
# Database Models
|
||||
|
||||
|
||||
class RoleTypeEnum(str, Enum):
|
||||
TYPE_ORGANIZATION = "TYPE_ORGANIZATION"
|
||||
TYPE_ORGANIZATION_API_TOKEN = "TYPE_ORGANIZATION_API_TOKEN"
|
||||
TYPE_GLOBAL = "TYPE_GLOBAL"
|
||||
TYPE_ORGANIZATION = "TYPE_ORGANIZATION" # Organization roles are associated with an organization, they are used to define the rights of a user in an organization
|
||||
TYPE_ORGANIZATION_API_TOKEN = "TYPE_ORGANIZATION_API_TOKEN" # Organization API Token roles are associated with an organization, they are used to define the rights of an API Token in an organization
|
||||
TYPE_GLOBAL = "TYPE_GLOBAL" # Global roles are not associated with an organization, they are used to define the default rights of a user
|
||||
|
||||
|
||||
class RoleBase(SQLModel):
|
||||
name: str
|
||||
description: Optional[str]
|
||||
rights: dict = Field(default={}, sa_column=Column(JSON))
|
||||
rights: Optional[Union[Rights,dict]] = Field(default={}, sa_column=Column(JSON))
|
||||
|
||||
|
||||
class Role(RoleBase, table=True):
|
||||
|
|
@ -26,11 +53,12 @@ class Role(RoleBase, table=True):
|
|||
|
||||
|
||||
class RoleCreate(RoleBase):
|
||||
org_id: int = Field(default=None, foreign_key="organization.id")
|
||||
org_id: Optional[int] = Field(default=None, foreign_key="organization.id")
|
||||
|
||||
|
||||
|
||||
class RoleUpdate(SQLModel):
|
||||
role_id: int = Field(default=None, foreign_key="role.id")
|
||||
name: Optional[str]
|
||||
description: Optional[str]
|
||||
rights: Optional[dict] = Field(default={}, sa_column=Column(JSON))
|
||||
rights: Optional[Union[Rights,dict]] = Field(default={}, sa_column=Column(JSON))
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
from sqlmodel import Field, SQLModel
|
||||
from enum import Enum
|
||||
from src.db.trail_runs import TrailRun, TrailRunRead
|
||||
from src.db.trail_runs import TrailRunRead
|
||||
|
||||
from src.db.trail_steps import TrailStep
|
||||
|
||||
|
||||
class TrailBase(SQLModel):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue