using PlatformTest.DbQuery; using ServerCommon; using ServerCore; using ServerBase; using USER_GUID = System.String; // public class DBQUserTest : QueryExecutorBase // { // private string m_combination_key_for_pk = string.Empty; // private string m_combination_key_for_sk = string.Empty; // private UserTestEntity? m_user_test; // private DynamoDbClient m_dynamoDbClient; // // public DBQUserTest(string combinationKeyForPK, string combinationKeyForSK, DynamoDbClient dynamoDbClient) // : base(nameof(DBQUserTest)) // { // m_combination_key_for_pk = combinationKeyForPK; // m_combination_key_for_sk = combinationKeyForSK; // m_dynamoDbClient = dynamoDbClient; // } // // //=================================================================================================== // // DB 쿼리 직전에 준비해야 할 로직들을 작성한다. // //=================================================================================================== // public override async Task onPrepareQuery() // { // var result = new Result(); // // var user_test = getOwner(); // NullReferenceCheckHelper.throwIfNull(user_test, () => "user is null !!!"); // // var query_batch = getQueryBatch(); // NullReferenceCheckHelper.throwIfNull(query_batch, // () => $"query_batch is null !!! - {user_test.toBasicString()}"); // // var db_connector = query_batch.getDynamoDbConnector(); // NullReferenceCheckHelper.throwIfNull(db_connector, // () => $"db_connector is null !!! - {user_test.toBasicString()}"); // // await DynamoDBDocBaseHelper.makePrimaryKey(m_combination_key_for_pk, m_combination_key_for_sk); // // // var ctxs = new List(); // // // // (result, var user_doc) = await m_user_test.onCopyToDocument(); // // // return Task.FromResult(result); // } // // //=================================================================================================== // // onPrepareQuery()를 성공할 경우 호출된다. // //=================================================================================================== // public override async Task onQuery() // { // var result = new Result(); // var err_msg = string.Empty; // // var user = getOwner(); // NullReferenceCheckHelper.throwIfNull(user, () => "user is null !!!"); // // var query_batch = getQueryBatch(); // NullReferenceCheckHelper.throwIfNull(query_batch, () => $"query_batch is null !!! - {user.toBasicString()}"); // // var db_connector = query_batch.getDynamoDbConnector(); // // var user_doc = new UserTestDoc(m_combination_key_for_pk, m_combination_key_for_sk); // var user_test_base = new UserTestEntity(EntityType.None); // var user_test_base_attrib = user_test_base.getEntityAttribute(); // NullReferenceCheckHelper.throwIfNull(user_test_base_attrib, () => $"user_test_base_attrib is null !!!"); // // user_test_base_attrib.UserId = m_combination_key_for_pk; // user_test_base_attrib.Name = m_combination_key_for_sk; // // var user_test_base_action = user_test_base.getEntityAction(); // NullReferenceCheckHelper.throwIfNull(user_test_base_action, () => $"user_test_base_action is null !!!"); // // result = await user_test_base_action.tryInsertUser(m_combination_key_for_pk, m_combination_key_for_sk); // if (result.isFail()) // { // return result; // } // // var query_context = new DynamoDbDocumentQueryContext(user_doc, QueryType.Insert); // await query_batch.addQuery(new QueryExecutorBase("InsertUser") // { // onPrepareQuery = () => Task.FromResult(new Result()), // onQuery = () => Task.FromResult(new Result()), // onQueryResponseCommit = () => Task.CompletedTask, // onQueryResponseRollback = (errorResult) => Task.CompletedTask // }); // // var result = await QueryHelper.sendQueryAndBusinessLog(query_batch); // if (result.isFail()) // { // return result; // } // // return result; // } // // //=================================================================================================== // // DB 쿼리를 성공하고, doFnCommit()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. // //=================================================================================================== // public override Task onQueryResponseCommit() // { // return Task.CompletedTask; // } // // //=================================================================================================== // // DB 쿼리를 실패하고, doFnRollback()가 QueryResultType.NotCalledQueryFunc를 반환할 경우 호출된다. // //=================================================================================================== // public override Task onQueryResponseRollback(Result errorResult) // { // return Task.CompletedTask; // } // } public class UserTestActorLog : ILogActor { } // EntityBase를 상속 받은 Entity는 EntityAttributeBase와 EntityActionBase를 상속받아 자동으로 만들어진 Attribute들과 Action들을 가지고 있습니다. // 위 내용은 onInit()에서 직접 생성해서 초기화 한다. public class DynamoDbExample { private readonly DynamoDbClient m_dynamo_db_client; private readonly UserTestEntity m_user_entity; public DynamoDbExample(DynamoDbClient dynamoDbClient) { m_dynamo_db_client = dynamoDbClient; m_user_entity = new UserTestEntity(); } public async Task<(Result, UserTestDoc?)> insertUser(string userId, string name) { await m_user_entity.onInit(); var action = m_user_entity.getEntityAction(); NullReferenceCheckHelper.throwIfNull(action, () => $"UserTestInsertAction is null !!! - {m_user_entity.toBasicString()}"); var (result, user_test_doc) = await action.tryInsertUser(userId, name, m_dynamo_db_client); return (result, user_test_doc); } public async Task<(Result, UserTestDoc?)> findUserOne(string userId) { await m_user_entity.onInit(); var action = m_user_entity.getEntityAction(); NullReferenceCheckHelper.throwIfNull(action, () => $"UserTestInsertAction is null !!! - {m_user_entity.toBasicString()}"); return await action.findUserOne(userId, m_dynamo_db_client); } public async Task<(Result, UserTestDoc?)> updateUser(string userId, string newName) { await m_user_entity.onInit(); var action = m_user_entity.getEntityAction(); NullReferenceCheckHelper.throwIfNull(action, () => $"UserTestUpdateOneAction is null !!! - {m_user_entity.toBasicString()}"); return await action.updateOne(userId, newName, m_dynamo_db_client); } public async Task DeleteUserOne(string userId) { await m_user_entity.onInit(); var action = m_user_entity.getEntityAction(); NullReferenceCheckHelper.throwIfNull(action, () => $"UserTestDeleteOneAction is null !!! - {m_user_entity.toBasicString()}"); return await action.deleteOne(userId, m_dynamo_db_client); } }