2023-09-11 13:06:17 +08:00
|
|
|
from typing import List, Optional
|
|
|
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from pydantic import ConfigDict
|
2023-05-12 02:32:50 +08:00
|
|
|
|
2024-01-27 01:08:02 +08:00
|
|
|
from felicity.apps.analysis.schemas import AnalysisBaseInDB, QCLevelInDB
|
2023-05-12 02:32:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# WorkSheet Schemas
|
|
|
|
#
|
|
|
|
|
|
|
|
# Shared properties
|
|
|
|
|
|
|
|
|
|
|
|
class WorkSheetBase(BaseModel):
|
2023-09-11 13:02:05 +08:00
|
|
|
analyst_uid: str | None = None
|
|
|
|
template_uid: str | None = None
|
2023-05-12 02:32:50 +08:00
|
|
|
worksheet_id: str | None = None
|
2023-09-11 13:02:05 +08:00
|
|
|
instrument_uid: str | None = None
|
|
|
|
sample_type_uid: str | None = None
|
|
|
|
analysis_uid: str | None = None
|
2023-05-12 02:32:50 +08:00
|
|
|
analysis: Optional[AnalysisBaseInDB] = None
|
2023-09-14 16:35:24 +08:00
|
|
|
reserved: Optional[dict] = None
|
2023-05-12 02:32:50 +08:00
|
|
|
number_of_samples: int | None = None
|
|
|
|
worksheet_type: int | None = 0
|
|
|
|
rows: int | None = None
|
|
|
|
cols: int | None = None
|
2023-09-11 13:02:05 +08:00
|
|
|
row_wise: bool | None = True
|
2023-05-12 02:32:50 +08:00
|
|
|
template: Optional[dict] = {}
|
|
|
|
state: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
class WorkSheetBaseInDB(WorkSheetBase):
|
2023-09-11 13:02:05 +08:00
|
|
|
uid: str | None = None
|
2023-05-12 02:32:50 +08:00
|
|
|
|
2023-09-14 16:35:24 +08:00
|
|
|
model_config = ConfigDict(from_attributes=True)
|
2023-05-12 02:32:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Properties to receive via API on creation
|
|
|
|
class WorkSheetCreate(WorkSheetBase):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties to receive via API on update
|
|
|
|
class WorkSheetUpdate(WorkSheetBase):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties to return via API
|
|
|
|
class WorkSheet(WorkSheetBaseInDB):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties stored in DB
|
|
|
|
class WorkSheetInDB(WorkSheetBaseInDB):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# WSTemplate Schemas
|
|
|
|
#
|
|
|
|
|
|
|
|
# Shared properties
|
|
|
|
class WSTemplateBase(BaseModel):
|
|
|
|
name: str | None = None
|
|
|
|
description: str | None = None
|
2023-09-11 13:02:05 +08:00
|
|
|
instrument_uid: str | None = None
|
|
|
|
sample_type_uid: str | None = None
|
|
|
|
analysis_uid: str | None = None
|
2023-05-12 02:32:50 +08:00
|
|
|
analysis: Optional[AnalysisBaseInDB] = None
|
|
|
|
qc_analyses: Optional[List[AnalysisBaseInDB]] = []
|
|
|
|
qc_levels: Optional[List[QCLevelInDB]] = []
|
2023-09-14 16:35:24 +08:00
|
|
|
reserved: Optional[dict] = None
|
2023-05-12 02:32:50 +08:00
|
|
|
number_of_samples: int | None = None
|
|
|
|
worksheet_type: str | None = "flat"
|
|
|
|
rows: int | None = None
|
|
|
|
cols: int | None = None
|
2023-09-11 13:02:05 +08:00
|
|
|
row_wise: bool | None = True
|
2023-05-12 02:32:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
class WSTemplateBaseInDB(WSTemplateBase):
|
2023-09-11 13:02:05 +08:00
|
|
|
uid: str | None = None
|
2023-05-12 02:32:50 +08:00
|
|
|
|
2023-09-14 16:35:24 +08:00
|
|
|
model_config = ConfigDict(from_attributes=True)
|
2023-05-12 02:32:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
# Properties to receive via API on creation
|
|
|
|
class WSTemplateCreate(WSTemplateBase):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties to receive via API on update
|
|
|
|
class WSTemplateUpdate(WSTemplateBase):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties to return via API
|
|
|
|
class WSTemplate(WSTemplateBaseInDB):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# Properties stored in DB
|
|
|
|
class WSTemplateInDB(WSTemplateBaseInDB):
|
|
|
|
pass
|