Esempio n. 1
0
        public int Insert(ImmutableObject obj)
        {
            ImmutableObject previousObject = LastObject();

            // If the object is new then we need to set the id to the next unique id available
            if (obj.Version == -1)
            {
                obj.Id = _latestVersionIndex.Last() + 1;
            }
            obj.InsertOp(previousObject.Index + 1, previousObject.Hash);

            WriteObject(obj);

            return(obj.Id);
        }
Esempio n. 2
0
        public Chain(string dbName)
        {
            _index = new Index <long>(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"{dbName}.index"));
            _latestVersionIndex = new LinkedIndex <int>(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"{dbName}.latestVersion");

            _chainStream = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"{dbName}.data"), FileMode.OpenOrCreate, FileAccess.ReadWrite);

            if (!Any)
            {
                var genesis = new ImmutableObject()
                {
                    Json = string.Empty
                };
                genesis.InsertOp(0, string.Empty);
                WriteObject(genesis);
            }
        }