Ejemplo n.º 1
0
        public async Task ScriptsTriggerTest(bool directMode)
        {
            CosmosClient client    = directMode ? DirectCosmosClient : GatewayCosmosClient;
            Database     database  = client.GetDatabase(DatabaseId);
            Container    container = await database.CreateContainerAsync(Guid.NewGuid().ToString(), "/pk");

            Scripts scripts = container.Scripts;

            List <string> createdIds = new List <string>()
            {
                "BasicQueryTrigger1",
                "BasicQueryTrigger2",
                "BasicQueryTrigger3"
            };

            //Basic query
            List <TriggerProperties> queryResults = await this.ToListAsync(
                scripts.GetTriggerQueryStreamIterator,
                scripts.GetTriggerQueryIterator <TriggerProperties>,
                "select * from T where STARTSWITH(T.id, \"BasicQueryTrigger\")",
                CosmosBasicQueryTests.RequestOptions);

            if (queryResults.Count < 3)
            {
                foreach (string id in createdIds)
                {
                    TriggerProperties properties = await scripts.CreateTriggerAsync(new TriggerProperties()
                    {
                        Id   = id,
                        Body = "function() {var x = 10;}"
                    });
                }

                queryResults = await this.ToListAsync(
                    scripts.GetTriggerQueryStreamIterator,
                    scripts.GetTriggerQueryIterator <TriggerProperties>,
                    "select * from T where STARTSWITH(T.id, \"BasicQueryTrigger\")",
                    CosmosBasicQueryTests.RequestOptions);
            }

            CollectionAssert.AreEquivalent(createdIds, queryResults.Select(x => x.Id).ToList());

            //Read All
            List <TriggerProperties> results = await this.ToListAsync(
                scripts.GetTriggerQueryStreamIterator,
                scripts.GetTriggerQueryIterator <TriggerProperties>,
                null,
                CosmosBasicQueryTests.RequestOptions);

            CollectionAssert.IsSubsetOf(createdIds, results.Select(x => x.Id).ToList());
        }
        public async Task CreateTrigger(string triggerName, string triggerType = "Post")
        {
            string message = "Create Triggers";

            Printer.PrintLine(message: message);
            var               triggerBody       = File.ReadAllText($"Triggers/{triggerName}.js");
            TriggerType       tt                = string.Equals(triggerType, "Pre") ? TriggerType.Pre : TriggerType.Post;
            Scripts           scripts           = _container.Scripts;
            TriggerProperties triggerProperties = new TriggerProperties
            {
                Id               = triggerName,
                Body             = triggerBody,
                TriggerType      = tt,
                TriggerOperation = TriggerOperation.Create
            };

            TriggerResponse triggerResponse = await scripts.CreateTriggerAsync(triggerProperties);

            WriteLine($"Trigger Details, Id: {triggerResponse.Resource.Id}, SelfLink: {triggerResponse.Resource.SelfLink},\nTriggerOperation: {triggerResponse.Resource.TriggerOperation}, TriggerType: {triggerResponse.Resource.TriggerType}");
            Printer.PrintLine(noOfTimes: (100 + message.Length));
        }