115 lines
4.4 KiB
Python
115 lines
4.4 KiB
Python
from rest_framework import serializers
|
|
from gvsds.common.Serializer import PascalCaseSerializer, PascalCaseModelSerializer
|
|
from gvsds.apps.stats.models import (
|
|
StatMetric, StatDimension, StatRecord, StatRanking, StatConfig,
|
|
)
|
|
|
|
|
|
class StatMetricSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = StatMetric
|
|
fields = ['MetricUUID', 'MetricCode', 'MetricName', 'MetricType', 'Unit', 'MetricStatus', 'CreateTime']
|
|
read_only_fields = ['MetricUUID', 'CreateTime']
|
|
|
|
|
|
class StatDimensionSerializer(PascalCaseModelSerializer):
|
|
class Meta:
|
|
model = StatDimension
|
|
fields = ['DimensionUUID', 'DimensionCode', 'DimensionName', 'DimensionStatus', 'CreateTime']
|
|
read_only_fields = ['DimensionUUID', 'CreateTime']
|
|
|
|
|
|
class StatRecordSerializer(PascalCaseModelSerializer):
|
|
MetricCode = serializers.CharField(source='Metric.MetricCode', read_only=True)
|
|
|
|
class Meta:
|
|
model = StatRecord
|
|
fields = ['RecordUUID', 'PeriodType', 'PeriodKey', 'MetricCode', 'DimensionValues', 'Value', 'UpdateTime', 'CreateTime']
|
|
read_only_fields = ['RecordUUID', 'UpdateTime', 'CreateTime']
|
|
|
|
|
|
class StatRankingSerializer(PascalCaseModelSerializer):
|
|
MetricCode = serializers.CharField(source='Metric.MetricCode', read_only=True)
|
|
|
|
class Meta:
|
|
model = StatRanking
|
|
fields = ['RankingUUID', 'RankingPeriod', 'RankingDate', 'MetricCode', 'DimensionFilter', 'TargetID', 'Rank', 'RankValue', 'TargetName', 'TargetAvatar', 'CreateTime']
|
|
read_only_fields = ['RankingUUID', 'CreateTime']
|
|
|
|
|
|
class StatConfigSerializer(PascalCaseModelSerializer):
|
|
MetricCode = serializers.CharField(source='Metric.MetricCode', read_only=True)
|
|
|
|
class Meta:
|
|
model = StatConfig
|
|
fields = ['ConfigUUID', 'MetricCode', 'AutoReset', 'ResetCron', 'EnableRanking', 'RankingTopN', 'RankingSortOrder', 'RetentionDays', 'ConfigStatus', 'CreateTime']
|
|
read_only_fields = ['ConfigUUID', 'CreateTime']
|
|
|
|
|
|
class MetricDefineSerializer(PascalCaseSerializer):
|
|
MetricCode = serializers.CharField()
|
|
MetricName = serializers.CharField()
|
|
MetricType = serializers.CharField(default='count')
|
|
Unit = serializers.CharField(default='次')
|
|
DefaultValue = serializers.DecimalField(max_digits=18, decimal_places=4, default=0)
|
|
|
|
|
|
class DimensionDefineSerializer(PascalCaseSerializer):
|
|
DimensionCode = serializers.CharField()
|
|
DimensionName = serializers.CharField()
|
|
|
|
|
|
class IncrementSerializer(PascalCaseSerializer):
|
|
MetricUUID = serializers.CharField()
|
|
DimensionValues = serializers.DictField()
|
|
Delta = serializers.DecimalField(max_digits=18, decimal_places=4, default=1)
|
|
Date = serializers.DateField(required=False)
|
|
PeriodType = serializers.CharField(default='daily')
|
|
|
|
|
|
class IncrementMultiSerializer(PascalCaseSerializer):
|
|
Increments = serializers.ListField()
|
|
Date = serializers.DateField(required=False)
|
|
|
|
|
|
class StatQuerySerializer(PascalCaseSerializer):
|
|
MetricUUID = serializers.CharField()
|
|
Date = serializers.DateField(required=False)
|
|
StartDate = serializers.DateField(required=False)
|
|
EndDate = serializers.DateField(required=False)
|
|
DimensionFilter = serializers.DictField(required=False)
|
|
PeriodType = serializers.CharField(default='daily')
|
|
|
|
|
|
class RankingGenerateSerializer(PascalCaseSerializer):
|
|
MetricUUID = serializers.CharField()
|
|
RankingDate = serializers.DateField(required=False)
|
|
DimensionFilter = serializers.DictField(required=False)
|
|
TopN = serializers.IntegerField(default=50)
|
|
|
|
|
|
class RankingQuerySerializer(PascalCaseSerializer):
|
|
RankingPeriod = serializers.CharField(default='daily')
|
|
RankingDate = serializers.DateField(required=False)
|
|
MetricUUID = serializers.CharField(required=False)
|
|
TopN = serializers.IntegerField(required=False)
|
|
|
|
|
|
class ResetSerializer(PascalCaseSerializer):
|
|
MetricUUID = serializers.CharField()
|
|
TargetDate = serializers.DateField(required=False)
|
|
|
|
|
|
class PurgeSerializer(PascalCaseSerializer):
|
|
BeforeDate = serializers.DateField()
|
|
PeriodType = serializers.CharField(default='daily')
|
|
|
|
|
|
class ConfigSerializer(PascalCaseSerializer):
|
|
MetricUUID = serializers.CharField()
|
|
AutoReset = serializers.BooleanField(default=True)
|
|
ResetCron = serializers.CharField(default='0 0 * * *')
|
|
EnableRanking = serializers.BooleanField(default=False)
|
|
RankingTopN = serializers.IntegerField(default=50)
|
|
RankingDimensionFilter = serializers.DictField(required=False)
|
|
RetentionDays = serializers.IntegerField(default=365) |