-- ============================================================================
-- Project: NE1aW 온압센서
-- Document: dbo.EOL Table Schema (Simplified Version)
-- Author: Antigravity AI
-- Date: 2026-05-28
-- Description: 사용자 요구사항(ID, 좌/우, SPEC UL, SPEC LL, 누설값, 판정)에 맞추어 단순화된 스키마.
--              재검사 이력 추적을 위해 Seq(PK) 및 InspectDateTime(일시) 컬럼 추가.
-- ============================================================================

-- 1. 데이터베이스 존재 여부 확인 및 자동 생성
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'NE1aW_PT_SENSOR')
BEGIN
    CREATE DATABASE [NE1aW_PT_SENSOR];
    PRINT 'Database [NE1aW_PT_SENSOR] created successfully.';
END
GO

USE [NE1aW_PT_SENSOR];
GO

-- 2. 기존 테이블이 존재할 경우 삭제
IF OBJECT_ID('dbo.EOL', 'U') IS NOT NULL
BEGIN
    DROP TABLE dbo.EOL;
    PRINT 'Existing [dbo].[EOL] table dropped.';
END
GO

-- 3. 단순화된 테이블 생성
CREATE TABLE [dbo].[EOL] (
    [InspectDate]       NVARCHAR(10)        NOT NULL, -- 검사 날짜 (YYYY-MM-DD)
    [InspectTime]       NVARCHAR(8)         NOT NULL, -- 검사 시간 (HH:MM:SS)
    [ID]                NVARCHAR(30)        NOT NULL, -- 센서 ID (ProductId) (기본키)
    [Channel]           NVARCHAR(10)        NOT NULL, -- 좌 / 우 (LEFT / RIGHT)
    [SpecUL]            NVARCHAR(10)        NOT NULL, -- SPEC UL
    [SpecLL]            NVARCHAR(10)        NOT NULL, -- SPEC LL
    [LeakValue]         NVARCHAR(20)        NOT NULL, -- 누설 측정값 (MeasuredValue)
    [Result]            NVARCHAR(5)         NOT NULL, -- 판정 결과 (OK / NG)

    CONSTRAINT [PK_EOL_ID] PRIMARY KEY CLUSTERED ([ID] ASC)
);
GO

PRINT 'Table [dbo].[EOL] created successfully with simplified columns and ID as Primary Key.';
GO


-- ============================================================================
-- [부록] 테스트 시나리오 SQL 예시 (단순화 버전)
-- ============================================================================
/*
-- 1. 테스트용 기본 데이터 INSERT (정상 삽입)
INSERT INTO [dbo].[EOL] (
    [InspectDate], [InspectTime], [ID], [Channel], [SpecUL], [SpecLL], [LeakValue], [Result]
)
VALUES (
    '2026-06-02', '14:48:51', 'IC_SIMPLE_0001', 'LEFT', '1.00', '-1.00', '0.125', 'OK'
);

-- 데이터 확인
SELECT * FROM [dbo].[EOL];

-- 2. 동일 ID 재검사 시 MERGE 문을 이용한 UPSERT 테스트 (정상 업데이트 확인)
-- 예상 결과: 기존 'IC_SIMPLE_0001' 레코드의 LeakValue가 '0.098'로 업데이트됨
MERGE INTO [dbo].[EOL] AS Target
USING (SELECT 'IC_SIMPLE_0001' AS ID) AS Source
ON (Target.ID = Source.ID)
WHEN MATCHED THEN
    UPDATE SET 
        Target.Channel = 'LEFT',
        Target.SpecUL = '1.00',
        Target.SpecLL = '-1.00',
        Target.LeakValue = '0.098', -- 업데이트될 새 값
        Target.Result = 'OK',
        Target.InspectDate = '2026-06-02',
        Target.InspectTime = '14:48:00'
WHEN NOT MATCHED THEN
    INSERT ([ID], [Channel], [SpecUL], [SpecLL], [LeakValue], [Result], [InspectDate], [InspectTime])
    VALUES ('IC_SIMPLE_0001', 'LEFT', '1.00', '-1.00', '0.098', 'OK', '2026-06-02', '14:48:00');

-- 데이터 확인 (값 업데이트 확인)
SELECT * FROM [dbo].[EOL];
*/
