コード例 #1
0
        private void IncrementDownloads(string file)
        {
            FileMetaInformation metaToIncrement = _metadataRepository.Get(file);

            metaToIncrement.DownloadsCounter++;
            _metadataRepository.Update(metaToIncrement);
        }
コード例 #2
0
        public ICollection <BaseMetadata> SaveValue(IEnumerable <BaseMetadata> metadatas)
        {
            var results = new List <BaseMetadata>();

            metadatas.ForEach(metadata =>
            {
                var field = metadataFieldRepository.GetByJsonId(metadata.Field);

                if (!field.IsNull())
                {
                    metadata.Field = field;

                    metadata.IsValid();

                    if (!field.Validator.IsNull())
                    {
                        MetadataValidator _validatorResult = null;

                        if (context.TryResolveNamed(field.Validator.Type.ToLower(), typeof(IMetadataValidatorService), out var validatorInfraService))
                        {
                            _validatorResult = ((IMetadataValidatorService)validatorInfraService).Get(metadata);
                        }
                        else
                        {
                            _validatorResult = field.Validator;
                        }

                        var valid = _validatorResult.IsValid(metadata);

                        if (!valid)
                        {
                            throw new ArgumentException("Valor informado no campo '{0}' no metadata não é válido para o tipo de validador '{1}'"
                                                        .ToFormat(field.JsonId, field.Validator.Type.GetDescription()));
                        }
                    }

                    BaseMetadata _metadata;

                    var metadataDb = metadataRepository.Get(metadata as T);

                    if (metadataDb.IsNull()) //is new meta
                    {
                        _metadata = metadata.Create();
                    }
                    else
                    {
                        _metadata = metadataDb.Update(metadata);
                    }

                    metadataRepository.Save(_metadata as T);

                    results.Add(_metadata);
                }
            });

            return(results);
        }
コード例 #3
0
        public async Task <MetadataResponse> GetStatistics(string itemType)
        {
            MetadataType type = itemType.ToLower() switch
            {
                "album" => MetadataType.Album,
                "gif" => MetadataType.Gif,
                "picture" => MetadataType.Picture,
                "video" => MetadataType.Video,
                "tag" => MetadataType.Tag,
                _ => throw new ArgumentException()
            };

            var aggregate = await _metadataRepository.Get(type);

            return(new MetadataResponse
            {
                ShortDescription = aggregate.ShortDescription,
                InfoItems = aggregate.MetadataDetails.InfoItems.ToList()
            });
        }
    }