refactor: SeaORM エンティティをスキーマファースト運用へ移行#202
Conversation
…rkflow 案D(生成物隔離 + manifest postprocess)の labels パイロット。 _generated/labels.rs を sea-orm-cli dense 形式で生成し、 entity_openapi.toml + seaorm_postprocess.sh で OpenAPI 属性を再付与。
users セクションは別タスク(ashigaru2)で追加予定のため除去。
…king Generate users from DB schema into _generated/, inject OpenAPI attrs via entity_openapi.toml postprocess, and re-export from entities/users.rs. password_hash and sessions_revoked_at remain schema(ignore) + serde skip.
Coverage Report for apps/frontend
File CoverageNo changed files found. |
|
Important Testing in progress…🟢 UI Tests: 21 tests unchanged |
|
Tip All tests passed and all changes approved!🟢 UI Tests: 21 tests unchanged |
レビュー結果🟡 Medium1.
|
| ファイル | 該当箇所 |
|---|---|
_generated/passkeys.rs:33,35 |
last_used_at, created_at |
_generated/github_integrations.rs |
token_expires_at, created_at |
_generated/personal_tokens.rs |
expires_at, last_used_at |
_generated/oauth_connections.rs |
token_expires_at, created_at, updated_at |
_generated/drive_folders.rs |
created_at |
_generated/drive_folder_shares.rs |
expires_at, created_at |
_generated/drive_files.rs |
created_at |
他の28エンティティは DateTimeUtc に置換済みなので、バッチ生成時の見落としと思われます。seaorm_postprocess.sh を再実行して統一してください。
現在はコンパイルが通っていますが、DateTimeUtc (chrono::DateTime<Utc>) と DateTimeWithTimeZone (chrono::DateTime<FixedOffset>) は別型のため、将来のコード変更で暗黙の型不一致が発生するリスクがあります。
🔵 Low
entity_openapi.tomlの#[schema(as=...)]書式が不統一(users,tenants,projectsの3件はas=、残り32件はas =)。動作に影響ありませんが統一を推奨。
|
レビューを投稿しました。主な指摘内容: Medium: Low: |
…nの末尾改行 - entity_openapi.toml: format="uuid" → format = "uuid" (スペース揃え、7箇所) - handlers/personal_tokens.rs: 不要な DateTimeWithTimeZone import を削除 - openapi.json: 末尾改行追加(biome format check 修正)
- entity_openapi.toml: recovery_codes.code_hashに#[schema(ignore)]/#[serde(skip_serializing)]を追加 - _generated/recovery_codes.rs: postprocess再実行で属性を付与 - _generated/*.rs: utoipa::ToSchema不要importを全35ファイルから削除 - seaorm_postprocess.sh: struct_attrs/doc重複挿入を防ぐ冪等ガード追加・ToSchema import注入ロジック削除 - handlers/admin_users.rs: 未使用のdrive_files/drive_folder_shares/drive_folders/tenants import削除
- seaorm_generate.sh: CRLF→LF変換(bash -n で syntax error になる問題を修正)
- seaorm_postprocess.sh: insert_linesが空の場合は改行を挿入しないよう修正
- _generated/{users,tenants,projects}.rs: as=→as= / format="→format = " 書式をTOMLと統一
(これによりpostprocess再実行時に重複属性が挿入されなくなり完全冪等化)

Summary
src/entities/配下の全38エンティティをsea-orm-cliによる自動生成(スキーマファースト)へ移行ToSchema/#[schema(...)])は生成後パッチ方式で再付与src/dto/削除済み(前 PR refactor: move DTOs from handlers to dedicated payload module #201 でPayloadへ移設済み)変更内容
src/entities/_generated/に sea-orm-codegen 生成ファイルを格納SQLX_OFFLINE=true cargo build --bin backendエラーゼロcargo test --no-runコンパイル通過pnpm openapi再生成後 openapi.json 差分ゼロpassword_hash等)の非露出を確認済み