255 lines
9.9 KiB
C#
255 lines
9.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
using Amazon.DynamoDBv2;
|
|
using Amazon.DynamoDBv2.DocumentModel;
|
|
using Amazon.DynamoDBv2.Model;
|
|
|
|
|
|
|
|
namespace ServerBase;
|
|
|
|
//==============================================================================================
|
|
// DB 쿼리 종류별 재정의 클래스들 이다.
|
|
//==============================================================================================
|
|
|
|
public partial class DBRequestGetBatch : QueryDbRequesterWithItemRequestBase<BatchGetItemRequest>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithItemRequest;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var db_client = query_batch.getDynamoDbConnector().getDbClient();
|
|
ArgumentNullException.ThrowIfNull(db_client, $"db_client is null !!!");
|
|
|
|
//=====================================================================================
|
|
// Batch 기반 DB Get Request 처리 : Non-Transaction
|
|
//=====================================================================================
|
|
var response = await db_client.BatchGetItemAsync(getDbRequestGenericType());
|
|
ArgumentNullException.ThrowIfNull(response, $"response is null !!!");
|
|
|
|
await response.logDetail();
|
|
|
|
query_runner.addDbResponse(response);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestWriteBatch : QueryDbRequesterWithItemRequestBase<BatchWriteItemRequest>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithItemRequest;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var db_client = query_batch.getDynamoDbConnector().getDbClient();
|
|
ArgumentNullException.ThrowIfNull(db_client, $"db_client is null !!!");
|
|
|
|
//=====================================================================================
|
|
// Batch 기반 DB Write Request 처리 : Non-Transaction
|
|
//=====================================================================================
|
|
var response = await db_client.BatchWriteItemAsync(getDbRequestGenericType());
|
|
ArgumentNullException.ThrowIfNull(response, $"response is null !!!");
|
|
|
|
await response.logDetail();
|
|
|
|
query_runner.addDbResponse(response);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestUpdate : QueryDbRequesterWithItemRequestBase<UpdateItemRequest>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithItemRequest;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var db_client = query_batch.getDynamoDbConnector().getDbClient();
|
|
ArgumentNullException.ThrowIfNull(db_client, $"db_client is null !!!");
|
|
|
|
|
|
//=====================================================================================
|
|
// Update 기반 DB Update Request 처리 : Non-Transaction
|
|
//=====================================================================================
|
|
var response = await db_client.UpdateItemAsync(getDbRequestGenericType());
|
|
ArgumentNullException.ThrowIfNull(response, $"response is null !!!");
|
|
|
|
await response.logDetail();
|
|
|
|
query_runner.addDbResponse(response);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestGetWithTransact : QueryDbRequesterWithItemRequestBase<TransactGetItemsRequest>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithItemRequest;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var db_client = query_batch.getDynamoDbConnector().getDbClient();
|
|
ArgumentNullException.ThrowIfNull(db_client, $"db_client is null !!!");
|
|
|
|
|
|
//=====================================================================================
|
|
// Transaction 기반 DB Get Request 처리
|
|
//=====================================================================================
|
|
var response = await db_client.TransactGetItemsAsync(getDbRequestGenericType());
|
|
ArgumentNullException.ThrowIfNull(response, $"response is null !!!");
|
|
|
|
await response.logDetail(getDbRequestGenericType());
|
|
|
|
query_runner.addDbResponse(response);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestWriteWithTransact : QueryDbRequesterWithItemRequestBase<TransactWriteItemsRequest>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithItemRequest;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var db_client = query_batch.getDynamoDbConnector().getDbClient();
|
|
ArgumentNullException.ThrowIfNull(db_client, $"db_client is null !!!");
|
|
|
|
//=====================================================================================
|
|
// Transaction 기반 DB Write Request 처리
|
|
//=====================================================================================
|
|
var response = await db_client.TransactWriteItemsAsync(getDbRequestGenericType());
|
|
ArgumentNullException.ThrowIfNull(response, $"response is null !!!");
|
|
|
|
await response.logDetail();
|
|
|
|
query_runner.addDbResponse(response);
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//==============================================================================================
|
|
// DB 쿼리 Document 전용 재정의 클래스들 이다.
|
|
//==============================================================================================
|
|
|
|
public partial class DBRequestGetWithDocumentBatchGet : QueryDbRequesterWithDocumentBatchGetBase<DocumentBatchGet>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
await Task.CompletedTask;
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithDocument;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var doc_batch_get = query_runner.getOrNewMultiTableDocumentBatchGet();
|
|
ArgumentNullException.ThrowIfNull(doc_batch_get, $"doc_batch_get is null !!!");
|
|
|
|
doc_batch_get.AddBatch(getDbRequestGenericType());
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestWriteWithDocumentBatchWrite : QueryDbRequesterWithDocumentBatchWriteBase<DocumentBatchWrite>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
await Task.CompletedTask;
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithDocument;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var doc_batch_write = query_runner.getOrNewMultiTableDocumentBatchWrite();
|
|
ArgumentNullException.ThrowIfNull(doc_batch_write, $"doc_batch_write is null !!!");
|
|
|
|
doc_batch_write.AddBatch(getDbRequestGenericType());
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestGetWithDocumentTransactGet : QueryDbRequesterWithDocumentTransactGetBase<DocumentTransactGet>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
await Task.CompletedTask;
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithDocument;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var doc_transact_get = query_runner.getOrNewMultiTableDocumentTransactGet();
|
|
ArgumentNullException.ThrowIfNull(doc_transact_get, $"doc_transact_get is null !!!");
|
|
|
|
doc_transact_get.AddTransactionPart(getDbRequestGenericType());
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public partial class DBRequestWriteWithDocumentTransactWrite : QueryDbRequesterWithDocumentTransactWriteBase<DocumentTransactWrite>
|
|
{
|
|
public override async Task<Result> doDbRequestAsync()
|
|
{
|
|
await Task.CompletedTask;
|
|
var result = new Result();
|
|
|
|
var query_batch = getQueryBatch();
|
|
ArgumentNullException.ThrowIfNull(query_batch, $"query_batch is null !!!");
|
|
|
|
var query_runner = query_batch.getQueryRunner() as QueryRunnerWithDocument;
|
|
ArgumentNullException.ThrowIfNull(query_runner, $"query_runner is null !!!");
|
|
var doc_transact_write = query_runner.getOrNewMultiTableDocumentTransactWrite();
|
|
ArgumentNullException.ThrowIfNull(doc_transact_write, $"doc_transact_write is null !!!");
|
|
|
|
doc_transact_write.AddTransactionPart(getDbRequestGenericType());
|
|
|
|
return result;
|
|
}
|
|
}
|