private unsafe void DeleteInternal(bool drop) { UnsafeBuffer buffer; UnsafeBuffer.FillFromString(&buffer, _name); _functions.Remove(Database.DatabaseHandle, &buffer, drop); }
/// <summary> /// Performs provided operations on collection indexes. /// </summary> /// <param name="path"></param> /// <param name="flags"></param> public unsafe void Index(string path, IndexOperations flags) { UnsafeBuffer buffer; UnsafeBuffer.FillFromString(&buffer, path); if (_functions.SetIndex(CollectionHandle, &buffer, (int)flags)) { return; } throw EjdbException.FromDatabase(Database, "Failed to perform index operation"); }
///// <summary> ///// Executes EJDB command. ///// </summary> ///// <remarks> ///// Supported commands: ///// ///// 1) Exports database collections data. See ejdbexport() method. ///// ///// "export" : { ///// "path" : string, //Exports database collections data ///// "cnames" : [string array]|null, //List of collection names to export ///// "mode" : int|null //Values: null|`JBJSONEXPORT` See ejdb.h#ejdbexport() method ///// } ///// ///// Command response: ///// { ///// "log" : string, //Diagnostic log about executing this command ///// "error" : string|null, //ejdb error message ///// "errorCode" : int|0, //ejdb error code ///// } ///// ///// 2) Imports previously exported collections data into ejdb. ///// ///// "import" : { ///// "path" : string //The directory path in which data resides ///// "cnames" : [string array]|null, //List of collection names to import ///// "mode" : int|null //Values: null|`JBIMPORTUPDATE`|`JBIMPORTREPLACE` See ejdb.h#ejdbimport() method ///// } ///// ///// Command response: ///// { ///// "log" : string, //Diagnostic log about executing this command ///// "error" : string|null, //ejdb error message ///// "errorCode" : int|0, //ejdb error code ///// } ///// </remarks> ///// <param name="cmd">Command object</param> ///// <returns>Command response.</returns> ////public BsonDocument Command(BsonDocument cmd) ////{ //// CheckDisposed(); //// byte[] cmdata = cmd.ToByteArray(); //// //internal static extern IntPtr _ejdbcommand([In] IntPtr db, [In] byte[] cmd); //// IntPtr cmdret = _command(this, cmdata); //// if (cmdret == IntPtr.Zero) //// { //// return null; //// } //// byte[] bsdata = BsonPtrIntoByteArray(cmdret); //// if (bsdata.Count == 0) //// { //// return null; //// } //// BsonIterator it = new BsonIterator(bsdata); //// return it.ToBsonDocument(); ////} /// <summary> /// Opens or creates database file depending on <see cref="OpenMode"/> /// </summary> /// <param name="dbFilePath">Database filename</param> /// <param name="openMode"></param> public unsafe void Open(string dbFilePath, OpenMode openMode = DefaultOpenMode) { UnsafeBuffer buffer; UnsafeBuffer.FillFromString(&buffer, dbFilePath); bool result = _functions.OpenDatabase(DatabaseHandle, &buffer, openMode); if (!result) { throw EjdbException.FromDatabase(this, "Error on open database"); } }
//gets collection with specified name public unsafe CollectionHandle(Database database, string name) : base(false) { _database = database; UnsafeBuffer buffer; UnsafeBuffer.FillFromString(&buffer, name); handle = _database.Library.Functions.Collection.GetCollection(DatabaseHandle, &buffer); if (IsInvalid) { //TODO: Use meta to get actual collection names throw EjdbException.FromDatabase(database, "Get collection error. May be collection does not exist?"); } }
//Creates collection with specified name public unsafe CollectionHandle(Database database, string name, CollectionOptions options) : base(false) { _database = database; UnsafeBuffer buffer; UnsafeBuffer.FillFromString(&buffer, name); handle = _database.Library.Functions.Collection.CreateCollection(DatabaseHandle, &buffer, ref options); if (IsInvalid) { throw EjdbException.FromDatabase(database, "Unknown error on collection creation"); } }