Esempio n. 1
0
        public async Task <IEnumerable <LogMessage> > GetMessages(FileMessagePostModel model)
        {
            await using var conn = GetConnection();
            var query = new StringBuilder(@"
                SELECT
                    m.timestamp,
                    m.type,
                    m.message,
                    m.origin_name AS OriginName,
                    m.relative_index AS RelativeIndex,
                    m.x,
                    m.y,
                    m.z
                FROM
                    round_file rf
                    INNER JOIN log_message m ON m.parent_file = rf.id
                WHERE
                    rf.round = @roundId
                    AND rf.name = ANY(@files)");

            if (model.CKeys != null && model.CKeys.Any())
            {
                query.AppendLine(@" AND m.message ~* ANY(@ckeys)");
            }

            query.AppendLine(" ORDER BY rf.name ASC, m.relative_index ASC");

            return(await conn.QueryAsync <LogMessage, SSVec, LogMessage>(query.ToString(), (message, vec) =>
            {
                if (message.Timestamp.HasValue)
                {
                    message.Timestamp = message.Timestamp.Value.ToUniversalTime();
                }
                message.Origin = vec;
                return message;
            }, model, splitOn : "x"));
        }
Esempio n. 2
0
        public async Task <IActionResult> FetchMessages([FromBody] FileMessagePostModel model)
        {
            var result = await _files.GetMessages(model);

            return(Ok(result));
        }