Пример #1
0
        private unsafe void DeleteInternal(bool drop)
        {
            UnsafeBuffer buffer;

            UnsafeBuffer.FillFromString(&buffer, _name);
            _functions.Remove(Database.DatabaseHandle, &buffer, drop);
        }
Пример #2
0
        /// <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");
        }
Пример #3
0
        ///// <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");
            }
        }
Пример #4
0
        //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?");
            }
        }
Пример #5
0
        //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");
            }
        }