C# cosmosdb


namespace AspNetCoreApi.Mapper
{
    public class CosmosDbRepository:ICosmosDbRepository
    {
        private static CosmosClient? client;
        private static Database? db;
        private static Container container;
        public CosmosDbRepository(string dbId, string contaierId)
        {
            var config = CoreConfig.GetCosmosdbConfig();
            client = new CosmosClient(config["uri"], config["connectionKey"]);
            db = client.GetDatabase(dbId);
            container = db.GetContainer(contaierId);
        }
        public FeedIterator<Gage> Query(string query)
        {
            QueryDefinition definition = new QueryDefinition(query);
            return container.GetItemQueryIterator<Gage>(definition);
        }
        public void Save(Gage entity)
        {
            container.UpsertItemAsync(entity);
        }

        public FeedIterator<Gage> SelectByCharacterIdAndActivityType(string characterId, string activityType)
        {
            string query = $"SELECT  * FROM c ;
            FeedIterator<Gage> items = Query(query);
            return items;
        }
    }
}

namespace AspNetCoreApi.Services
{
    
    public class GageService : IGageService
    {
        ICosmosDbRepository cosmosdb;
        public GageService(ICosmosDbRepository cosmosdb)
        {
            this.cosmosdb = cosmosdb;
        }

        public async Task<GageEvent.GageEventResult> AccumulateGage(string characterId, string activityType,string gageDelta)
        {
            Gage gage = new Gage();
            FeedIterator<Gage> item =  cosmosdb.SelectByCharacterIdAndActivityType(characterId, activityType);
            if (item.HasMoreResults)
            {
                while (item.HasMoreResults)
                {
                    FeedResponse<Gage> i = await item.ReadNextAsync();
                    foreach(Gage g in i.Resource){
                        gage = g;
                    }
                }
                //item['lastValue'] = add(item['lastValue'], entity['lastValue'])
                //item['lastTriggeredAt'] = entity['lastTriggeredAt']
            }
            else
            {
                gage.activityType = activityType;
            }

            return new GageEvent.GageEventResult.Success("", "", "");
        }

        public async Task<GageEvent.GageEventResult> Refresh(string characterId, string activityType)
        {
            Gage gage = new Gage();
            FeedIterator<Gage> item = this.cosmosdb.SelectByCharacterIdAndActivityType(characterId, activityType);
            if (item.HasMoreResults)
            {
                while (item.HasMoreResults)
                {
                    FeedResponse<Gage> i = await item.ReadNextAsync();
                    foreach (Gage g in i.Resource)
                    {
                        gage = g;
                    }
                }
            }
            else
            {
                //TODO item = dict(id=uuidgen(), characterId=character_id,
                //activityType = activity_type, lastValue = 0, lastTriggeredAt = current_time())
                gage.activityType = activityType;
            }
            cosmosdb.Save(gage);
            return new GageEvent.GageEventResult.Success("","",item);
        }

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值