Example #1
0
        public ActionResponseDocument GetById([FromBody] ActionRequestDocument action)
        {
            _logger.LogDebug($"API:{MammutUtility.GetCurrentMethod()}");

            var result = new ActionResponseDocument();

            var session = _core.Session.ObtainSession(action.SessionId);

            try
            {
                var metaDocument = _core.Document.GetById(session, action.Path, action.Id);
                result.Document = MetaDocument.ToPayload(metaDocument);
                result.Id       = metaDocument.Id;
                result.Success  = true;
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = "Call failed with an exception: " + ex.Message;
                _logger.LogError(result.Message);
            }
            finally
            {
                session.CommitImplicitTransaction();
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// Creates a new single document and returns its id.
        /// </summary>
        /// <param name="schemaPath"></param>
        /// <returns></returns>
        public Guid Create(Session session, string logicalSchemaPath, Common.Payload.Model.Document document)
        {
            session.CurrentTransaction.AcquireSchemaLatch(logicalSchemaPath, Constants.LatchMode.Shared);

            var schemaInfo = _core.Schema.Parse(session, logicalSchemaPath);

            if (schemaInfo.Exists == false)
            {
                throw new Exception("The specified schema does not exist.");
            }

            //We allow the document ID to be generated at the client side.
            if (document.Id == Guid.Empty)
            {
                document.Id = Guid.NewGuid();
            }

            var collection = _core.IO.GetJson <MetaDocumentCollection>(session, schemaInfo.DocumentCatalog);

            var documentFilePath = schemaInfo.GetDocumentFileName(document);

            _core.IO.PutJson(session, documentFilePath, MetaDocument.FromPayload(document));

            collection.Add(MetaDocument.FromPayload(document));

            _core.IO.PutJson(session, schemaInfo.DocumentCatalog, collection);

            return(document.Id);
        }
Example #3
0
 public string GetDocumentFileName(MetaDocument document) => GetDocumentFileName(document.Id);
Example #4
0
 public string GetDocumentLogicalPath(MetaDocument document) => GetDocumentLogicalPath(document.Id);