コンテンツにスキップ

モデル一覧

データベース用 モデル

データベースのテーブルに対応するモデルです。 SQLModelを継承して定義されており、データベースのCRUD操作に使用されます。

基本各モデルは以下の形で定義されます。

  • Base: 基本的なモデルクラス
  • Main: テーブル定義用のクラス (DB操作時に使用)
  • Create: 新規作成用のモデルクラス
  • Read: 読み取り用のモデルクラス
  • Update: 更新用のモデルクラス

この設計は、データの整合性と操作の明確化を目的としています。

src.models.task

新しいTaskモデルの定義

Task

Bases: TaskBase

新しいタスクモデル

タスクの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID | None

タスクのID。デフォルトはNoneで、データベースに保存時に自動生成されます。

project_id UUID | None

タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。

parent_id UUID | None

親タスクのID。サブタスクの場合に使用。

title str

タスクのタイトル。インデックスが設定されており、検索に使用されます。

description str

タスクの詳細説明。デフォルトは空文字列。

status TaskStatus

タスクのステータス。デフォルトはINBOX。

due_date date | None

タスクの締め切り日。設定されていない場合はNone。

Source code in src/models/task.py
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class Task(TaskBase, table=True):
    """新しいタスクモデル

    タスクの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID | None): タスクのID。デフォルトはNoneで、データベースに保存時に自動生成されます。
        project_id (uuid.UUID | None): タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。
        parent_id (uuid.UUID | None): 親タスクのID。サブタスクの場合に使用。
        title (str): タスクのタイトル。インデックスが設定されており、検索に使用されます。
        description (str): タスクの詳細説明。デフォルトは空文字列。
        status (TaskStatus): タスクのステータス。デフォルトはINBOX。
        due_date (date | None): タスクの締め切り日。設定されていない場合はNone。
    """

    id: uuid.UUID | None = Field(default_factory=uuid.uuid4, primary_key=True)

TaskBase

Bases: SQLModel

タスクの基本モデル

タスクの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
project_id UUID | None

タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。

parent_id UUID | None

親タスクのID。サブタスクの場合に使用。

title str

タスクのタイトル。インデックスが設定されており、検索に使用されます。

description str

タスクの詳細説明。デフォルトは空文字列。

status TaskStatus

タスクのステータス。デフォルトはINBOX。

due_date date | None

タスクの締め切り日。設定されていない場合はNone。

Source code in src/models/task.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class TaskBase(SQLModel):
    """タスクの基本モデル

    タスクの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        project_id (uuid.UUID | None): タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。
        parent_id (uuid.UUID | None): 親タスクのID。サブタスクの場合に使用。
        title (str): タスクのタイトル。インデックスが設定されており、検索に使用されます。
        description (str): タスクの詳細説明。デフォルトは空文字列。
        status (TaskStatus): タスクのステータス。デフォルトはINBOX。
        due_date (date | None): タスクの締め切り日。設定されていない場合はNone。
    """

    project_id: uuid.UUID | None = Field(default=None, foreign_key="project.id", index=True)
    parent_id: uuid.UUID | None = Field(default=None, foreign_key="task.id", index=True)
    title: str = Field(index=True)
    description: str = Field(default="")
    status: TaskStatus = Field(default=TaskStatus.INBOX, index=True)
    due_date: date | None = Field(default=None, index=True)

TaskCreate

Bases: TaskBase

新しいタスク作成用モデル

タスクを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
project_id UUID | None

タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。

parent_id UUID | None

親タスクのID。サブタスクの場合に使用。

title str

タスクのタイトル。インデックスが設定されており、検索に使用されます。

description str

タスクの詳細説明。デフォルトは空文字列。

status TaskStatus

タスクのステータス。デフォルトはINBOX。

due_date date | None

タスクの締め切り日。設定されていない場合はNone。

Source code in src/models/task.py
62
63
64
65
66
67
68
69
70
71
72
73
74
class TaskCreate(TaskBase):
    """新しいタスク作成用モデル

    タスクを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        project_id (uuid.UUID | None): タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。
        parent_id (uuid.UUID | None): 親タスクのID。サブタスクの場合に使用。
        title (str): タスクのタイトル。インデックスが設定されており、検索に使用されます。
        description (str): タスクの詳細説明。デフォルトは空文字列。
        status (TaskStatus): タスクのステータス。デフォルトはINBOX。
        due_date (date | None): タスクの締め切り日。設定されていない場合はNone。
    """

TaskRead

Bases: TaskBase

新しいタスク読み取り用モデル

タスクの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID

タスクのID。

project_id UUID | None

タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。

parent_id UUID | None

親タスクのID。サブタスクの場合に使用。

title str

タスクのタイトル。インデックスが設定されており、検索に使用されます。

description str

タスクの詳細説明。デフォルトは空文字列。

status TaskStatus

タスクのステータス。デフォルトはINBOX。

due_date date | None

タスクの締め切り日。設定されていない場合はNone。

Source code in src/models/task.py
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
class TaskRead(TaskBase):
    """新しいタスク読み取り用モデル

    タスクの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID): タスクのID。
        project_id (uuid.UUID | None): タスクが属するプロジェクトのID。プロジェクトに属さないタスクの場合はNone。
        parent_id (uuid.UUID | None): 親タスクのID。サブタスクの場合に使用。
        title (str): タスクのタイトル。インデックスが設定されており、検索に使用されます。
        description (str): タスクの詳細説明。デフォルトは空文字列。
        status (TaskStatus): タスクのステータス。デフォルトはINBOX。
        due_date (date | None): タスクの締め切り日。設定されていない場合はNone。
    """

    id: uuid.UUID

TaskStatus

Bases: str, Enum

タスクのステータス(GTDシステムに基づく)

Source code in src/models/task.py
10
11
12
13
14
15
16
17
18
19
class TaskStatus(str, Enum):
    """タスクのステータス(GTDシステムに基づく)"""

    INBOX = "inbox"
    NEXT_ACTION = "next_action"
    WAITING_FOR = "waiting_for"
    SOMEDAY_MAYBE = "someday_maybe"
    DELEGATED = "delegated"
    COMPLETED = "completed"
    CANCELLED = "cancelled"

TaskUpdate

Bases: SQLModel

新しいタスク更新用モデル

タスクの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
project_id UUID | None

タスクが属するプロジェクトのID。Noneの場合は更新しない。

parent_id UUID | None

親タスクのID。Noneの場合は更新しない。

title str | None

タスクのタイトル。Noneの場合は更新しない。

description str | None

タスクの詳細説明。Noneの場合は更新しない。

status TaskStatus | None

タスクのステータス。Noneの場合は更新しない。

due_date date | None

タスクの締め切り日。Noneの場合は更新しない。

Source code in src/models/task.py
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class TaskUpdate(SQLModel):
    """新しいタスク更新用モデル

    タスクの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        project_id (uuid.UUID | None): タスクが属するプロジェクトのID。Noneの場合は更新しない。
        parent_id (uuid.UUID | None): 親タスクのID。Noneの場合は更新しない。
        title (str | None): タスクのタイトル。Noneの場合は更新しない。
        description (str | None): タスクの詳細説明。Noneの場合は更新しない。
        status (TaskStatus | None): タスクのステータス。Noneの場合は更新しない。
        due_date (date | None): タスクの締め切り日。Noneの場合は更新しない。
    """

    project_id: uuid.UUID | None = None
    parent_id: uuid.UUID | None = None
    title: str | None = None
    description: str | None = None
    status: TaskStatus | None = None
    due_date: date | None = None

src.models.project

Projectモデルの定義

Project

Bases: ProjectBase

プロジェクトモデル

プロジェクトの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID | None

プロジェクトのID。デフォルトはNoneで、データベースに保存時に自動生成されます。

title str

プロジェクト名。インデックスが設定されており、検索に使用されます。

description str

プロジェクトの説明。デフォルトは空文字列。

status ProjectStatus

プロジェクトのステータス。デフォルトはACTIVE。

Source code in src/models/project.py
34
35
36
37
38
39
40
41
42
43
44
45
46
class Project(ProjectBase, table=True):
    """プロジェクトモデル

    プロジェクトの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID | None): プロジェクトのID。デフォルトはNoneで、データベースに保存時に自動生成されます。
        title (str): プロジェクト名。インデックスが設定されており、検索に使用されます。
        description (str): プロジェクトの説明。デフォルトは空文字列。
        status (ProjectStatus): プロジェクトのステータス。デフォルトはACTIVE。
    """

    id: uuid.UUID | None = Field(default_factory=uuid.uuid4, primary_key=True)

ProjectBase

Bases: SQLModel

プロジェクトの基本モデル

プロジェクトの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
title str

プロジェクト名。インデックスが設定されており、検索に使用されます。

description str

プロジェクトの説明。デフォルトは空文字列。

status ProjectStatus

プロジェクトのステータス。デフォルトはACTIVE。

Source code in src/models/project.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class ProjectBase(SQLModel):
    """プロジェクトの基本モデル

    プロジェクトの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        title (str): プロジェクト名。インデックスが設定されており、検索に使用されます。
        description (str): プロジェクトの説明。デフォルトは空文字列。
        status (ProjectStatus): プロジェクトのステータス。デフォルトはACTIVE。
    """

    title: str = Field(index=True)
    description: str = Field(default="")
    status: ProjectStatus = Field(default=ProjectStatus.ACTIVE, index=True)

ProjectCreate

Bases: ProjectBase

プロジェクト作成用モデル

プロジェクトを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
title str

プロジェクト名。インデックスが設定されており、検索に使用されます。

description str

プロジェクトの説明。デフォルトは空文字列。

status ProjectStatus

プロジェクトのステータス。デフォルトはACTIVE。

Source code in src/models/project.py
49
50
51
52
53
54
55
56
57
58
class ProjectCreate(ProjectBase):
    """プロジェクト作成用モデル

    プロジェクトを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        title (str): プロジェクト名。インデックスが設定されており、検索に使用されます。
        description (str): プロジェクトの説明。デフォルトは空文字列。
        status (ProjectStatus): プロジェクトのステータス。デフォルトはACTIVE。
    """

ProjectRead

Bases: ProjectBase

プロジェクト読み取り用モデル

プロジェクトの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID

プロジェクトのID。

title str

プロジェクト名。インデックスが設定されており、検索に使用されます。

description str

プロジェクトの説明。デフォルトは空文字列。

status ProjectStatus

プロジェクトのステータス。デフォルトはACTIVE。

Source code in src/models/project.py
61
62
63
64
65
66
67
68
69
70
71
72
73
class ProjectRead(ProjectBase):
    """プロジェクト読み取り用モデル

    プロジェクトの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID): プロジェクトのID。
        title (str): プロジェクト名。インデックスが設定されており、検索に使用されます。
        description (str): プロジェクトの説明。デフォルトは空文字列。
        status (ProjectStatus): プロジェクトのステータス。デフォルトはACTIVE。
    """

    id: uuid.UUID

ProjectStatus

Bases: str, Enum

プロジェクトのステータス

Source code in src/models/project.py
 9
10
11
12
13
14
15
class ProjectStatus(str, Enum):
    """プロジェクトのステータス"""

    ACTIVE = "active"
    ON_HOLD = "on_hold"
    COMPLETED = "completed"
    CANCELLED = "cancelled"

ProjectUpdate

Bases: SQLModel

プロジェクト更新用モデル

プロジェクトの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
title str | None

プロジェクト名。Noneの場合は更新しない。

description str | None

プロジェクトの説明。Noneの場合は更新しない。

status ProjectStatus | None

プロジェクトのステータス。Noneの場合は更新しない。

Source code in src/models/project.py
76
77
78
79
80
81
82
83
84
85
86
87
88
89
class ProjectUpdate(SQLModel):
    """プロジェクト更新用モデル

    プロジェクトの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        title (str | None): プロジェクト名。Noneの場合は更新しない。
        description (str | None): プロジェクトの説明。Noneの場合は更新しない。
        status (ProjectStatus | None): プロジェクトのステータス。Noneの場合は更新しない。
    """

    title: str | None = None
    description: str | None = None
    status: ProjectStatus | None = None

src.models.tag

Tagモデルの定義

Tag

Bases: TagBase

タグモデル

タグの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID | None

タグのID。デフォルトはNoneで、データベースに保存時に自動生成されます。

name str

タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。

Source code in src/models/tag.py
20
21
22
23
24
25
26
27
28
29
30
class Tag(TagBase, table=True):
    """タグモデル

    タグの情報をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID | None): タグのID。デフォルトはNoneで、データベースに保存時に自動生成されます。
        name (str): タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。
    """

    id: uuid.UUID | None = Field(default_factory=uuid.uuid4, primary_key=True)

TagBase

Bases: SQLModel

タグの基本モデル

タグの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
name str

タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。

Source code in src/models/tag.py
 8
 9
10
11
12
13
14
15
16
17
class TagBase(SQLModel):
    """タグの基本モデル

    タグの基本情報を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        name (str): タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。
    """

    name: str = Field(index=True)

TagCreate

Bases: TagBase

タグ作成用モデル

タグを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
name str

タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。

Source code in src/models/tag.py
33
34
35
36
37
38
39
40
class TagCreate(TagBase):
    """タグ作成用モデル

    タグを新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        name (str): タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。
    """

TagRead

Bases: TagBase

タグ読み取り用モデル

タグの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
id UUID

タグのID。

name str

タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。

Source code in src/models/tag.py
43
44
45
46
47
48
49
50
51
52
53
class TagRead(TagBase):
    """タグ読み取り用モデル

    タグの情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        id (uuid.UUID): タグのID。
        name (str): タグ名(例: @PC, #重要)。インデックスが設定されており、検索に使用されます。
    """

    id: uuid.UUID

TagUpdate

Bases: SQLModel

タグ更新用モデル

タグの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
name str | None

タグ名。Noneの場合は更新しない。

Source code in src/models/tag.py
56
57
58
59
60
61
62
63
64
65
class TagUpdate(SQLModel):
    """タグ更新用モデル

    タグの情報を更新する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        name (str | None): タグ名。Noneの場合は更新しない。
    """

    name: str | None = None

src.models.task_tag

TaskTagモデルの定義(多対多の関連テーブル)

TaskTag

Bases: TaskTagBase

タスクとタグの関連モデル

タスクとタグの多対多関係をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
task_id UUID

タスクのID。複合主キーの一部。

tag_id UUID

タグのID。複合主キーの一部。

Source code in src/models/task_tag.py
22
23
24
25
26
27
28
29
30
class TaskTag(TaskTagBase, table=True):
    """タスクとタグの関連モデル

    タスクとタグの多対多関係をデータベースに保存するためのモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        task_id (uuid.UUID): タスクのID。複合主キーの一部。
        tag_id (uuid.UUID): タグのID。複合主キーの一部。
    """

TaskTagBase

Bases: SQLModel

タスクとタグの関連の基本モデル

タスクとタグの多対多関係を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
task_id UUID

タスクのID。

tag_id UUID

タグのID。

Source code in src/models/task_tag.py
 8
 9
10
11
12
13
14
15
16
17
18
19
class TaskTagBase(SQLModel):
    """タスクとタグの関連の基本モデル

    タスクとタグの多対多関係を定義するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        task_id (uuid.UUID): タスクのID。
        tag_id (uuid.UUID): タグのID。
    """

    task_id: uuid.UUID = Field(foreign_key="task.id", primary_key=True)
    tag_id: uuid.UUID = Field(foreign_key="tag.id", primary_key=True)

TaskTagCreate

Bases: TaskTagBase

タスクとタグの関連作成用モデル

タスクとタグの関連を新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
task_id UUID

タスクのID。

tag_id UUID

タグのID。

Source code in src/models/task_tag.py
33
34
35
36
37
38
39
40
41
class TaskTagCreate(TaskTagBase):
    """タスクとタグの関連作成用モデル

    タスクとタグの関連を新規作成する際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        task_id (uuid.UUID): タスクのID。
        tag_id (uuid.UUID): タグのID。
    """

TaskTagRead

Bases: TaskTagBase

タスクとタグの関連読み取り用モデル

タスクとタグの関連情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

属性:

名前 タイプ デスクリプション
task_id UUID

タスクのID。

tag_id UUID

タグのID。

Source code in src/models/task_tag.py
44
45
46
47
48
49
50
51
52
class TaskTagRead(TaskTagBase):
    """タスクとタグの関連読み取り用モデル

    タスクとタグの関連情報を読み取る際に使用するモデルクラス。SQLModelを使用してデータベースと連携します。

    Attributes:
        task_id (uuid.UUID): タスクのID。
        tag_id (uuid.UUID): タグのID。
    """

src.models.memo

Memoモデルの定義

Memo

Bases: MemoBase

メモモデル

Source code in src/models/memo.py
15
16
17
18
class Memo(MemoBase, table=True):
    """メモモデル"""

    id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)

MemoBase

Bases: SQLModel

メモの基本モデル

Source code in src/models/memo.py
 8
 9
10
11
12
class MemoBase(SQLModel):
    """メモの基本モデル"""

    content: str = Field(default="", description="マークダウン形式のメモ内容")
    task_id: uuid.UUID = Field(foreign_key="task.id", index=True)

MemoCreate

Bases: MemoBase

メモ作成用モデル

Source code in src/models/memo.py
21
22
class MemoCreate(MemoBase):
    """メモ作成用モデル"""

MemoRead

Bases: MemoBase

メモ読み取り用モデル

Source code in src/models/memo.py
25
26
27
28
class MemoRead(MemoBase):
    """メモ読み取り用モデル"""

    id: uuid.UUID

MemoUpdate

Bases: SQLModel

メモ更新用モデル

Source code in src/models/memo.py
31
32
33
34
class MemoUpdate(SQLModel):
    """メモ更新用モデル"""

    content: str | None = None