コード例 #1
0
        public async Task <ActionResult> Invoke([FromBody] UpdateLayerDto dto)
        {
            await _validator.Validate(dto);

            var status = await _statusTable.GetStatus(WorkspaceId, LayerId);

            if (!status.HasValue)
            {
                return(NotFound());
            }

            if (dto.DataLocation != null)
            {
                // in other cases we will have to create a new conversion job
                var job = new ConversionJobData
                {
                    LayerId      = LayerId,
                    WorkspaceId  = WorkspaceId,
                    LayerName    = dto.Name,
                    DataLocation = dto.DataLocation,
                    Description  = dto.Description
                };
                await _gdConversionQueue.Queue(job);

                await _statusTable.UpdateStatus(WorkspaceId, LayerId, LayerStatus.Processing);
            }

            return(Accepted(new LayerStatusDto
            {
                Id = LayerId,
                Status = LayerStatus.Processing
            }));
        }
コード例 #2
0
        public async Task <ActionResult> Invoke([FromBody] CreateLayerDto dto)
        {
            var id = Guid.NewGuid().ToString();
            ConversionJobData job = new ConversionJobData
            {
                LayerId      = id,
                WorkspaceId  = WorkspaceId,
                LayerName    = dto.Name,
                DataLocation = dto.DataLocation,
                Description  = dto.Description
            };
            await _gdConversionQueue.Queue(job);

            await _statusTable.UpdateStatus(WorkspaceId, id, LayerStatus.Processing);

            if (dto.Styles != null)
            {
                await _layerStyleService.Update(WorkspaceId, id, dto.Styles);
            }

            return(Accepted(new LayerStatusDto
            {
                Id = id,
                Status = LayerStatus.Processing
            }));
        }
コード例 #3
0
        public async Task <QueuedConversionJob> Queue(ConversionJobData job)
        {
            var queued = new CloudQueueMessage(JsonConvert.SerializeObject(job));
            await _queue.AddMessageAsync(queued);

            return(new QueuedConversionJob
            {
                Id = queued.Id,
                PopReceipt = queued.PopReceipt,
                Content = JsonConvert.DeserializeObject <ConversionJobData>(queued.AsString), // todo: verify if this asString works as expected
            });
        }
コード例 #4
0
        public Task <QueuedConversionJob> Queue(ConversionJobData job)
        {
            System.Diagnostics.Debug.WriteLine($"Queueing job to {_queueDatabase.DataSource} (Enter)");
            var id = Guid.NewGuid().ToString();

            using (var addMsgCmd = new SqliteCommand())
            {
                addMsgCmd.Connection  = _queueDatabase;
                addMsgCmd.CommandText = "INSERT INTO Queue(ID, PopCount, Content) VALUES($QueueId, 0, $content)";
                addMsgCmd.Parameters.AddWithValue("$content", JsonConvert.SerializeObject(job));
                addMsgCmd.Parameters.AddWithValue("$QueueId", id);
                addMsgCmd.ExecuteScalar();
            }
            System.Diagnostics.Debug.WriteLine($"Queueing job to {_queueDatabase.DataSource} (Exit)");
            return(Task.FromResult(new QueuedConversionJob
            {
                Id = id,
                PopReceipt = null,
                Content = job
            }));
        }