From 54760bfabb36c96f666ca7f77028d0d6a9c812fc Mon Sep 17 00:00:00 2001 From: vnugent Date: Wed, 14 Feb 2024 14:35:03 -0500 Subject: Squashed commit of the following: commit d72bd53e20770be4ced0d627567ecf567d1ce9f4 Author: vnugent Date: Mon Feb 12 18:34:52 2024 -0500 refactor: #1 convert sql libraries to assets for better code splitting commit 736b873e32447254b3aadbb5c6252818c25e8fd4 Author: vnugent Date: Sun Feb 4 01:30:25 2024 -0500 submit pending changes --- .../src/Extensions/DbStoreHelperExtensions.cs | 89 ---------------------- 1 file changed, 89 deletions(-) delete mode 100644 lib/VNLib.Plugins.Extensions.Data/src/Extensions/DbStoreHelperExtensions.cs (limited to 'lib/VNLib.Plugins.Extensions.Data/src/Extensions/DbStoreHelperExtensions.cs') diff --git a/lib/VNLib.Plugins.Extensions.Data/src/Extensions/DbStoreHelperExtensions.cs b/lib/VNLib.Plugins.Extensions.Data/src/Extensions/DbStoreHelperExtensions.cs deleted file mode 100644 index 55230cf..0000000 --- a/lib/VNLib.Plugins.Extensions.Data/src/Extensions/DbStoreHelperExtensions.cs +++ /dev/null @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2023 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Extensions.Data -* File: DbStoreHelperExtensions.cs -* -* DbStoreHelperExtensions.cs is part of VNLib.Plugins.Extensions.Data which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Extensions.Data is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Extensions.Data is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System.Threading; -using System.Transactions; -using System.Threading.Tasks; - -using VNLib.Plugins.Extensions.Data.Abstractions; - -namespace VNLib.Plugins.Extensions.Data.Extensions -{ - internal static class DbStoreHelperExtensions - { - /// - /// If the current context instance inherits the interface, - /// attempts to open a transaction with the specified isolation level. - /// - /// - /// The transaction isolation level - /// A token to cancel the operation - /// - internal static Task OpenTransactionAsync(this ITransactionalDbContext tdb, IsolationLevel isolationLevel, CancellationToken cancellationToken = default) - { - if (tdb is IConcurrentDbContext ccdb) - { - return ccdb.OpenTransactionAsync(isolationLevel, cancellationToken); - } - else - { - //Just ignore the isolation level - return tdb.OpenTransactionAsync(cancellationToken); - } - } - - /// - /// Opens a new database connection. If the context supports transactions, it will - /// open a transaction with the specified isolation level. - /// - /// - /// - /// The transaction isolation level - /// A token to cancel the transaction operation - /// A task that resolves the new open - public static async Task OpenAsync(this IDataStore store, IsolationLevel level, CancellationToken cancellation = default) - where T : class, IDbModel - { - //Open new db context - IDbContextHandle ctx = store.GetNewContext(); - - //Support transactions and start them if the context supports it - if(ctx is ITransactionalDbContext tdb) - { - try - { - //Open transaction - await tdb.OpenTransactionAsync(level, cancellation); - } - catch - { - await ctx.DisposeAsync(); - throw; - } - } - - return ctx; - } - } -} -- cgit