dbmsv4 init...2
This commit is contained in:
parent
48464e565f
commit
16ad702c5e
@ -9,7 +9,6 @@ use App\Models\CommonModel;
|
||||
use CodeIgniter\Database\Exceptions\DatabaseException;
|
||||
use CodeIgniter\Validation\Exceptions\ValidationException;
|
||||
use RuntimeException;
|
||||
use SebastianBergmann\Type\ObjectType;
|
||||
|
||||
/**
|
||||
* @template TEntity of CommonEntity
|
||||
@ -131,7 +130,6 @@ abstract class CommonService
|
||||
//CURD 결과처리용
|
||||
protected function handle_save_result(mixed $result, int|string $uid): int|string
|
||||
{
|
||||
log_message('debug', $this->model->getLastQuery());
|
||||
if ($result === false) {
|
||||
$errors = $this->model->errors();
|
||||
$errorMsg = is_array($errors) ? implode(", ", $errors) : "DB 저장 작업이 실패했습니다.";
|
||||
@ -164,6 +162,7 @@ abstract class CommonService
|
||||
// INSERT 시 Entity의 PK는 0 또는 NULL이어야 함 (DB가 ID를 생성하도록)
|
||||
$initialPK = $entity->getPK();
|
||||
$result = $this->model->save($entity);
|
||||
log_message('debug', $this->model->getLastQuery());
|
||||
// 최종적으로 DB에 반영된 PK를 반환받습니다. (UPDATE이면 기존 PK, INSERT이면 새 PK)
|
||||
$entity->{$this->model->getPKField()} = $this->handle_save_result($result, $initialPK);
|
||||
// handle_save_result에서 확인된 최종 PK를 사용하여 DB에서 최신 엔티티를 가져옴
|
||||
@ -221,21 +220,24 @@ abstract class CommonService
|
||||
//수정용
|
||||
protected function modify_process($entity, array $formDatas): object
|
||||
{
|
||||
//FormData 검증
|
||||
// 검증
|
||||
if (!$this->getFormService()->validate($formDatas)) {
|
||||
throw new ValidationException(implode("\n", service('validation')->getErrors()));
|
||||
throw new ValidationException(
|
||||
implode("\n", service('validation')->getErrors())
|
||||
);
|
||||
}
|
||||
//관리자 정보추가용
|
||||
// 관리자 정보 추가
|
||||
$formDatas['user_uid'] = $this->getAuthContext()->getUID();
|
||||
// DTO 데이터에서 PK 필드가 있다면 제거하여, fill()에서 기존 PK를 덮어쓰지 않도록 합니다.
|
||||
//PK 추가
|
||||
$pkField = $this->model->getPKField();
|
||||
if (isset($formDatas[$pkField])) {
|
||||
unset($formDatas[$pkField]);
|
||||
if (!isset($formDatas[$pkField]) && !empty($entity->getPK())) {
|
||||
// original에 있는 PK 값을 attributes에 명시적으로 복사합니다.
|
||||
$formDatas[$pkField] = $entity->getPK();
|
||||
}
|
||||
$entity->merge($formDatas);
|
||||
dd($entity);
|
||||
$entity->fill($formDatas);
|
||||
return $this->save_process($entity);
|
||||
}
|
||||
|
||||
final public function modify(string|int $uid, object $dto): CommonEntity
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
@ -16,16 +16,12 @@ abstract class PartService extends CommonService
|
||||
}
|
||||
abstract public function attachToServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): PartEntity;
|
||||
abstract public function detachFromServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): PartEntity;
|
||||
final protected function updatePart($entity, array $formDatas): PartEntity
|
||||
|
||||
protected function modify_process($entity, array $formDatas): object
|
||||
{
|
||||
$updateResult = $this->model->update($entity->getPK(), $formDatas);
|
||||
if ($updateResult === false || $updateResult === 0) {
|
||||
// 업데이트 실패 시 예외 처리
|
||||
$errors = $this->model->errors();
|
||||
$errorMsg = is_array($errors) ? implode(", ", $errors) : "DB 업데이트 실패 또는 변경된 행 없음.";
|
||||
throw new \Exception(__METHOD__ . ": " . $errorMsg);
|
||||
}
|
||||
$entity->merge($formDatas);
|
||||
return $entity;
|
||||
$fields = array_keys($formDatas);
|
||||
$this->getFormService()->setFormFields($fields);
|
||||
$this->getFormService()->setFormRules('modify', $fields);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ abstract class PartType1Service extends PartService
|
||||
throw new \Exception("현재 사용가능 갯수[{$entity->getAvailable()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
|
||||
}
|
||||
$formDatas['used'] = $entity->getUsed() + $serverPartEntity->getCnt();
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
public function detachFromServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): PartEntity
|
||||
{
|
||||
@ -37,6 +37,6 @@ abstract class PartType1Service extends PartService
|
||||
throw new \Exception("현재 사용된 갯수[{$entity->getUsed()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다.");
|
||||
}
|
||||
$formDatas['used'] = $entity->getUsed() - $serverPartEntity->getCnt();
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ abstract class PartType2Service extends PartService
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: {$entity->getTitle()}는 사용중입니다.");
|
||||
}
|
||||
//파트정보 수정
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
public function detachFromServerPart(ServerPartEntity $serverPartEntity, array $formDatas = []): PartEntity
|
||||
{
|
||||
@ -38,6 +38,6 @@ abstract class PartType2Service extends PartService
|
||||
//파트정보가져오기
|
||||
$entity = $this->getPartEntityByServerPart($serverPartEntity);
|
||||
//파트정보 수정
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ abstract class PartType3Service extends PartType2Service
|
||||
throw new \Exception(__METHOD__ . ":에서 오류발생: {$entity->getTitle()}는 사용중입니다.");
|
||||
}
|
||||
//파트정보 수정
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
|
||||
public function detachFromServer(ServerEntity $serverEntity, array $formDatas = []): PartEntity
|
||||
@ -38,6 +38,6 @@ abstract class PartType3Service extends PartType2Service
|
||||
//파트정보가져오기
|
||||
$entity = $this->getPartEntityByServer($serverEntity);
|
||||
//파트정보 수정
|
||||
return $this->updatePart($entity, $formDatas);
|
||||
return parent::modify_process($entity, $formDatas);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user