init
This commit is contained in:
40
internal/models/system_category.go
Normal file
40
internal/models/system_category.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package models
|
||||
|
||||
import "gorm.io/gorm"
|
||||
|
||||
// SystemCategory represents system-level categories that cannot be deleted by users
|
||||
// Feature: accounting-feature-upgrade
|
||||
// Validates: Requirements 8.19, 8.20
|
||||
type SystemCategory struct {
|
||||
ID uint `gorm:"primarykey" json:"id"`
|
||||
Code string `gorm:"size:50;uniqueIndex;not null" json:"code"` // refund, reimbursement
|
||||
Name string `gorm:"size:100;not null" json:"name"`
|
||||
Icon string `gorm:"size:100" json:"icon"`
|
||||
Type string `gorm:"size:20;not null" json:"type"` // income, expense
|
||||
IsSystem bool `gorm:"default:true" json:"is_system"`
|
||||
}
|
||||
|
||||
// TableName specifies the table name for SystemCategory
|
||||
func (SystemCategory) TableName() string {
|
||||
return "system_categories"
|
||||
}
|
||||
|
||||
// InitSystemCategories initializes the system categories (refund and reimbursement)
|
||||
// This function should be called during application startup or migration
|
||||
// Feature: accounting-feature-upgrade
|
||||
// Validates: Requirements 8.19, 8.20
|
||||
func InitSystemCategories(db *gorm.DB) error {
|
||||
categories := []SystemCategory{
|
||||
{Code: "refund", Name: "退款", Icon: "mdi:cash-refund", Type: "income", IsSystem: true},
|
||||
{Code: "reimbursement", Name: "报销", Icon: "mdi:receipt-text-check", Type: "income", IsSystem: true},
|
||||
}
|
||||
|
||||
for _, cat := range categories {
|
||||
// Use FirstOrCreate to avoid duplicates
|
||||
if err := db.FirstOrCreate(&cat, SystemCategory{Code: cat.Code}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user