//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// DataHelpers.SQL satellite library | Author: Sergei Y.Kitáev
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System;
using System.Reflection;
using System.Collections.Generic;
using System.Threading.Tasks;
using u = user_rtx;

namespace DataHelpers.SQL {

/// <summary>
/// </summary>
[h_db_orm_type]
public static class HDbQueryPerformerN {
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

public static async Task<List<TListItem>?>
   Do_A<TListItem>( HAsyncDbQueryRoutine<TListItem> bodyA ) =>
      await HDbAccessPerformer.Do_A<List<TListItem>?>(async()=>{
         return await bodyA().ConfigureAwait(false);
      }).ConfigureAwait(false);

public static async Task<( List<TList1_Item>? List_1,
                           List<TList2_Item>? List_2 )>
   Do_A<TList1_Item,TList2_Item>(
      HAsyncDbQueryRoutine_2<TList1_Item,TList2_Item> bodyA ) =>
         await HDbAccessPerformer.Do_A<(List<TList1_Item>?,List<TList2_Item>?)>(
            async()=>{
               return await bodyA().ConfigureAwait(false);
            }).ConfigureAwait(false);

public static async Task<( List<TList1_Item>? List_1,
                           List<TList2_Item>? List_2,
                           List<TList3_Item>? List_3 )>
   Do_A<TList1_Item,TList2_Item,TList3_Item>(
      HAsyncDbQueryRoutine_3<TList1_Item,TList2_Item,TList3_Item> bodyA ) =>
         await HDbAccessPerformer.Do_A<(List<TList1_Item>?,List<TList2_Item>?,List<TList3_Item>?)>(
            async()=>{
               return await bodyA().ConfigureAwait(false);
            }).ConfigureAwait(false);

public static async Task<( List<TList1_Item>? List_1,
                           List<TList2_Item>? List_2,
                           List<TList3_Item>? List_3,
                           List<TList4_Item>? List_4 )>
   Do_A<TList1_Item,TList2_Item,TList3_Item,TList4_Item>(
      HAsyncDbQueryRoutine_4<TList1_Item,TList2_Item,TList3_Item,TList4_Item> bodyA ) =>
         await HDbAccessPerformer.Do_A<(List<TList1_Item>?,List<TList2_Item>?,List<TList3_Item>?,
                                       List<TList4_Item>?)>(
            async()=>{
               return await bodyA().ConfigureAwait(false);
            }).ConfigureAwait(false);

public static async Task<( List<TList1_Item>? List_1,
                           List<TList2_Item>? List_2,
                           List<TList3_Item>? List_3,
                           List<TList4_Item>? List_4,
                           List<TList5_Item>? List_5 )>
   Do_A<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item>(
      HAsyncDbQueryRoutine_5<TList1_Item,TList2_Item,TList3_Item,TList4_Item,TList5_Item> bodyA ) =>
         await HDbAccessPerformer.Do_A<(List<TList1_Item>?,List<TList2_Item>?,List<TList3_Item>?,
                                       List<TList4_Item>?,List<TList5_Item>?)>(
            async()=>{
               return await bodyA().ConfigureAwait(false);
            }).ConfigureAwait(false);

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
} // HDbQueryPerformerN

} // DataHelpers.SQL
