/****************************************************************************
           RCDB meta info copy to local sqlite db
           -----------------------------------------

begin      : 2015/10/15
copyright  : (C) 2005 Solbox Inc.
author     : Dev Storage Team
email      : huibong@solbox.com
version    : 3.5

CopyRight(C) 2005 Solbox Inc. All Rights reserved.
Redistribution and use in source and binary forms, with or with out
modification, are not permitted in outside of Solbox Inc.
*****************************************************************************/

#ifndef __META_COPY_H__
#define __META_COPY_H__


#include <sqlite3.h>
#include <unistd.h>

#include "Database.h"


// 본 클래스는
// 정합성 검증 또는 Garbage Clean 처리 목적으로 이에 해당하는 content 정보를
// RCDB 에서 조회하여... 그 결과를 sqlite local DB 에 저장하는 역활을 담당한다.
// - 정합성 검증, garbage clean 의 사용 목적에 따라... 조회 Query 가 달라짐. ( deleted_yn 포함 여부 )
class CMetaCopy
{

	public:

		// 생성자
		// - pLocalDb : sqlite memory db 객체에 대한 포인트
		CMetaCopy( sqlite3 * pLocalDb );

		// 소멸자
		~CMetaCopy();
		

		// 객체 초기화 함수
		// - RCDB 와 연결 생성
		// - sqlite 를 이용하여 local 장비에 저장 목적 file DB 생성 처리
		bool Init();
				
		// RCDB 상의 meta 정보를 조회하여.. local DB 에 저장 처리 수행 함수
		bool Start();
		
		// RCDB 에서 조회된 최종 합계 정보를 반환한다.
		unsigned long long GetTotalCount() { return m_ullTotalSelectCount; }
		

	private:
		
		// RCDB 객체
		DataBase m_rcdb;

		// sqlite3 local db 객체.
		sqlite3 * m_pLocalDb;
		sqlite3_stmt * m_pLocalStmt;


		// 최종 조회된 total 건수를 저장하기 위한 변수.
		unsigned long long m_ullTotalSelectCount;
		

	private:
		
		// sqlite 를 이용하여 local db table, index 등의 생성 작업을 수행.
		bool CreateLocalDb();
		
	
};

#endif /* __META_COPY_H__ */

