public PersistDocumentCatalogItem Add(PersistDocument document) { var catalogItem = new PersistDocumentCatalogItem() { Id = document.Id }; this.Collection.Add(catalogItem); return(catalogItem); }
public void Store(UInt64 processId, string schema, Document document, out Guid newId) { try { var persistDocument = PersistDocument.FromPayload(document); if (persistDocument.Id == Guid.Empty) { persistDocument.Id = Guid.NewGuid(); } if (persistDocument.Created == DateTime.MinValue) { persistDocument.Created = DateTime.UtcNow; } if (persistDocument.Modfied == DateTime.MinValue) { persistDocument.Modfied = DateTime.UtcNow; } using (var txRef = core.Transactions.Begin(processId)) { var schemaMeta = core.Schemas.VirtualPathToMeta(txRef.Transaction, schema, LockOperation.Write); if (schemaMeta == null || schemaMeta.Exists == false) { throw new DokdexSchemaDoesNotExistException(schema); } string documentCatalogDiskPath = Path.Combine(schemaMeta.DiskPath, Constants.DocumentCatalogFile); var documentCatalog = core.IO.GetJson <PersistDocumentCatalog>(txRef.Transaction, documentCatalogDiskPath, LockOperation.Write); documentCatalog.Add(persistDocument); core.IO.PutJson(txRef.Transaction, documentCatalogDiskPath, documentCatalog); string documentDiskPath = Path.Combine(schemaMeta.DiskPath, Helpers.GetDocumentModFilePath(persistDocument.Id)); core.IO.CreateDirectory(txRef.Transaction, Path.GetDirectoryName(documentDiskPath)); core.IO.PutJson(txRef.Transaction, documentDiskPath, persistDocument); core.Indexes.InsertDocumentIntoIndexes(txRef.Transaction, schemaMeta, persistDocument); newId = document.Id; txRef.Commit(); } } catch (Exception ex) { core.Log.Write(String.Format("Failed to store document for process {0}.", processId), ex); throw; } }