/// <summary> /// Insert a new entity into the database and return the modified entity /// </summary> public virtual void Insert(Entity entity) { string type = EntityUtils.GetEntityStringType(entity.GetType()); if (!string.IsNullOrEmpty(entity.EntityKey)) { throw new ArgumentException( "Provided entity has already been inserted" ); } try { AttemptInsert(type, entity); } catch (ArangoException e) when(e.ErrorNumber == 1203) { // collection not found -> create it arango.CreateCollection( EntityUtils.CollectionFromType(type), CollectionType.Document ); AttemptInsert(type, entity); } }
/// <summary> /// Creates the sessions collection /// </summary> private void CreateCollection() { arango.CreateCollection(CollectionName, CollectionType.Document); log.Info( $"[Unisave] {CollectionName} collection has been created. " + "This collection is used for storing session data." ); arango.CreateIndex( CollectionName, IndexType.TTL, new string[] { "expiresAt" }, new JsonObject() .Add("expireAfter", 0) ); log.Info( $"[Unisave] TTL index on collection {CollectionName} has " + "been created. It makes sure that old sessions get deleted." ); }