package repository import ( "context" "bugulma/backend/internal/domain" "gorm.io/gorm" ) // ServiceNeedRepository implements domain.ServiceNeedRepository with GORM type ServiceNeedRepository struct { *BaseRepository[domain.ServiceNeed] } // NewServiceNeedRepository creates a new GORM-based service need repository func NewServiceNeedRepository(db *gorm.DB) domain.ServiceNeedRepository { return &ServiceNeedRepository{ BaseRepository: NewBaseRepository[domain.ServiceNeed](db), } } // GetByOrganization retrieves service needs by organization ID func (r *ServiceNeedRepository) GetByOrganization(ctx context.Context, organizationID string) ([]*domain.ServiceNeed, error) { return r.FindWhereWithContext(ctx, "organization_id = ?", organizationID) } // GetByType retrieves service needs by type func (r *ServiceNeedRepository) GetByType(ctx context.Context, serviceType string) ([]*domain.ServiceNeed, error) { return r.FindWhereWithContext(ctx, "type = ?", serviceType) } // GetByUrgency retrieves service needs by urgency level func (r *ServiceNeedRepository) GetByUrgency(ctx context.Context, urgency domain.UrgencyLevel) ([]*domain.ServiceNeed, error) { return r.FindWhereWithContext(ctx, "urgency = ?", urgency) } // GetActiveNeeds retrieves all active service needs func (r *ServiceNeedRepository) GetActiveNeeds(ctx context.Context) ([]*domain.ServiceNeed, error) { return r.FindWhereWithContext(ctx, "status = ?", "active") }