108 lines
5.3 KiB
Go
108 lines
5.3 KiB
Go
package repositories
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"tyapi-server/internal/domains/statistics/entities"
|
|
)
|
|
|
|
// StatisticsRepository 统计指标仓储接口
|
|
type StatisticsRepository interface {
|
|
// 基础CRUD操作
|
|
Save(ctx context.Context, metric *entities.StatisticsMetric) error
|
|
FindByID(ctx context.Context, id string) (*entities.StatisticsMetric, error)
|
|
FindByType(ctx context.Context, metricType string, limit, offset int) ([]*entities.StatisticsMetric, error)
|
|
Update(ctx context.Context, metric *entities.StatisticsMetric) error
|
|
Delete(ctx context.Context, id string) error
|
|
|
|
// 按类型和日期范围查询
|
|
FindByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
|
|
FindByTypeDimensionAndDateRange(ctx context.Context, metricType, dimension string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
|
|
FindByTypeNameAndDateRange(ctx context.Context, metricType, metricName string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
|
|
|
|
// 聚合查询
|
|
GetAggregatedMetrics(ctx context.Context, metricType, dimension string, startDate, endDate time.Time) (map[string]float64, error)
|
|
GetMetricsByDimension(ctx context.Context, dimension string, startDate, endDate time.Time) ([]*entities.StatisticsMetric, error)
|
|
|
|
// 统计查询
|
|
CountByType(ctx context.Context, metricType string) (int64, error)
|
|
CountByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) (int64, error)
|
|
|
|
// 批量操作
|
|
BatchSave(ctx context.Context, metrics []*entities.StatisticsMetric) error
|
|
BatchDelete(ctx context.Context, ids []string) error
|
|
|
|
// 清理操作
|
|
DeleteByDateRange(ctx context.Context, startDate, endDate time.Time) error
|
|
DeleteByTypeAndDateRange(ctx context.Context, metricType string, startDate, endDate time.Time) error
|
|
}
|
|
|
|
// StatisticsReportRepository 统计报告仓储接口
|
|
type StatisticsReportRepository interface {
|
|
// 基础CRUD操作
|
|
Save(ctx context.Context, report *entities.StatisticsReport) error
|
|
FindByID(ctx context.Context, id string) (*entities.StatisticsReport, error)
|
|
FindByUser(ctx context.Context, userID string, limit, offset int) ([]*entities.StatisticsReport, error)
|
|
FindByStatus(ctx context.Context, status string) ([]*entities.StatisticsReport, error)
|
|
Update(ctx context.Context, report *entities.StatisticsReport) error
|
|
Delete(ctx context.Context, id string) error
|
|
|
|
// 按类型查询
|
|
FindByType(ctx context.Context, reportType string, limit, offset int) ([]*entities.StatisticsReport, error)
|
|
FindByTypeAndPeriod(ctx context.Context, reportType, period string, limit, offset int) ([]*entities.StatisticsReport, error)
|
|
|
|
// 按日期范围查询
|
|
FindByDateRange(ctx context.Context, startDate, endDate time.Time, limit, offset int) ([]*entities.StatisticsReport, error)
|
|
FindByUserAndDateRange(ctx context.Context, userID string, startDate, endDate time.Time, limit, offset int) ([]*entities.StatisticsReport, error)
|
|
|
|
// 统计查询
|
|
CountByUser(ctx context.Context, userID string) (int64, error)
|
|
CountByType(ctx context.Context, reportType string) (int64, error)
|
|
CountByStatus(ctx context.Context, status string) (int64, error)
|
|
|
|
// 批量操作
|
|
BatchSave(ctx context.Context, reports []*entities.StatisticsReport) error
|
|
BatchDelete(ctx context.Context, ids []string) error
|
|
|
|
// 清理操作
|
|
DeleteExpiredReports(ctx context.Context, expiredBefore time.Time) error
|
|
DeleteByStatus(ctx context.Context, status string) error
|
|
}
|
|
|
|
// StatisticsDashboardRepository 统计仪表板仓储接口
|
|
type StatisticsDashboardRepository interface {
|
|
// 基础CRUD操作
|
|
Save(ctx context.Context, dashboard *entities.StatisticsDashboard) error
|
|
FindByID(ctx context.Context, id string) (*entities.StatisticsDashboard, error)
|
|
FindByUser(ctx context.Context, userID string, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
FindByUserRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
Update(ctx context.Context, dashboard *entities.StatisticsDashboard) error
|
|
Delete(ctx context.Context, id string) error
|
|
|
|
// 按角色查询
|
|
FindByRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
FindDefaultByRole(ctx context.Context, userRole string) (*entities.StatisticsDashboard, error)
|
|
FindActiveByRole(ctx context.Context, userRole string, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
|
|
// 按状态查询
|
|
FindByStatus(ctx context.Context, isActive bool, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
FindByAccessLevel(ctx context.Context, accessLevel string, limit, offset int) ([]*entities.StatisticsDashboard, error)
|
|
|
|
// 统计查询
|
|
CountByUser(ctx context.Context, userID string) (int64, error)
|
|
CountByRole(ctx context.Context, userRole string) (int64, error)
|
|
CountByStatus(ctx context.Context, isActive bool) (int64, error)
|
|
|
|
// 批量操作
|
|
BatchSave(ctx context.Context, dashboards []*entities.StatisticsDashboard) error
|
|
BatchDelete(ctx context.Context, ids []string) error
|
|
|
|
// 特殊操作
|
|
SetDefaultDashboard(ctx context.Context, dashboardID string) error
|
|
RemoveDefaultDashboard(ctx context.Context, userRole string) error
|
|
ActivateDashboard(ctx context.Context, dashboardID string) error
|
|
DeactivateDashboard(ctx context.Context, dashboardID string) error
|
|
}
|
|
|