<?php
namespace App\Models\Entities;

use CodeIgniter\Model;

class V2stdailyModel extends Model
{
    protected $table      = 'v2_st_daily';
    protected $primaryKey = 'id'; // 실제 PK 컬럼명으로 수정하세요 (st_date, cpid, gbn_cd가 복합키인 경우도 있음)
    protected $allowedFields = ['st_date', 'cpid', 'gbn_cd', 'cnt'];

    public function set_v2_st_daily($st_date, $cpid, $gbn_cd, $cnt, $cnt_type = 'add')
    {
        if (empty($cnt)) $cnt = 0;

        $data = [];
        // 1. 날짜 처리
        $date_field = empty($st_date) ? "NOW()" : "?";
        if (!empty($st_date)) $data[] = $st_date;

        // 2. 나머지 필드 바인딩 데이터 준비
        $data[] = $cpid;
        $data[] = $gbn_cd;
        $data[] = $cnt;

        // 3. 중복 처리 로직 분기
        if (strtolower($cnt_type) === 'add') {
            // MariaDB에서 가장 안전한 바인딩 방식
            $sql = "INSERT INTO v2_st_daily (st_date, cpid, gbn_cd, cnt) 
                    VALUES ($date_field, ?, ?, ?) 
                    ON DUPLICATE KEY UPDATE cnt = cnt + ?";
            $data[] = $cnt; // UPDATE 절의 더하기 값을 위해 한 번 더 추가
        } else {
            // 중복 시 값을 덮어씌움 (VALUES 함수 사용)
            $sql = "INSERT INTO v2_st_daily (st_date, cpid, gbn_cd, cnt) 
                    VALUES ($date_field, ?, ?, ?) 
                    ON DUPLICATE KEY UPDATE cnt = VALUES(cnt)";
        }

        // 쿼리 실행
        $result = $this->db->query($sql, $data);
        
        return [
            'status'        => $result ? true : false,
            'error'         => $this->db->error(), // ['code', 'message']
            'last_query'    => (string)$this->db->getLastQuery() // 디버깅용
        ];
    }
    
}