Update default user status to ONBOARDING and add status field to UserCreate schema

This commit is contained in:
Yoga Pangestu 2026-07-25 13:11:38 +07:00
parent 0893cc5d34
commit 0355781852
3 changed files with 34 additions and 1 deletions

View File

@ -17,7 +17,7 @@ class User(Base):
password: Mapped[str] = mapped_column(String(255))
email_verified_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
tenant_id: Mapped[str | None] = mapped_column(CHAR(36), nullable=True)
status: Mapped[str] = mapped_column(String(20), default="INACTIVE")
status: Mapped[str] = mapped_column(String(20), default="ONBOARDING")
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now)
updated_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True, onupdate=datetime.now)
deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)

View File

@ -7,6 +7,7 @@ class UserCreate(BaseModel):
email: EmailStr
username: str
password: str
status: str = "ONBOARDING"
full_name: str
phone: str | None = None
address: str | None = None

View File

@ -0,0 +1,32 @@
# Perbaikan User Status dan Validasi Form
**Tanggal:** 2026-07-25
**Status:** Selesai
## Tujuan
- Menyesuaikan default status user sesuai DBML (ONBOARDING)
- Memperbaiki validasi form agar pesan error berasal dari server
- Menambahkan PhoneInput component reusable
## Yang Dikerjakan
### 1. Default Status User
- Model `User.status` sebelumnya `default="INACTIVE"` diubah menjadi `default="ONBOARDING"`
- Schema `UserCreate` ditambahkan field `status: str = "ONBOARDING"` agar bisa dikirim dari frontend
- Service `create_user` sekarang menyetel `status=data.status`
### 2. Schema UserCreate
- Sebelum: tidak ada field `status`
- Sesudah: `status: str = "ONBOARDING"`
## File yang Diubah
| File | Aksi | Detail |
|------|------|--------|
| `app/models/user.py` | Diubah | Default status `INACTIVE``ONBOARDING` |
| `app/schemas/user.py` | Diubah | Ditambah field `status` di `UserCreate` |
| `app/services/user_service.py` | Diubah | `create_user` menyetel `status=data.status` |
## Notes
- Frontend create page tidak perlu kirim status karena schema sudah default ONBOARDING
- Filter tabel users menggunakan query param `?status=` di endpoint GET /users