package billing import ( "context" "github.com/youruser/base/model" "gorm.io/gorm" ) // UsageService handles usage recording type UsageService struct{} func NewUsageService() *UsageService { return &UsageService{} } // Record inserts a usage record func (s *UsageService) Record(ctx context.Context, db *gorm.DB, record *model.AIUsageRecord) error { _, err := model.AIUsageRecordInsert(ctx, db, record) return err } // UpdateConversationStats updates conversation token count and cost func (s *UsageService) UpdateConversationStats(ctx context.Context, db *gorm.DB, conversationId int64, tokens int64, cost float64) error { return db.WithContext(ctx).Model(&model.AIConversation{}). Where("id = ?", conversationId). Updates(map[string]interface{}{ "total_tokens": gorm.Expr("total_tokens + ?", tokens), "total_cost": gorm.Expr("total_cost + ?", cost), }).Error }