Index: src/libchcore/TSQLiteSerializer.cpp
===================================================================
diff -u -r4a7f28238afbf60b9e3f3daeffe590ff1638ec74 -r9479911a096555a7504c5c8a8eaee83ecb63440c
--- src/libchcore/TSQLiteSerializer.cpp	(.../TSQLiteSerializer.cpp)	(revision 4a7f28238afbf60b9e3f3daeffe590ff1638ec74)
+++ src/libchcore/TSQLiteSerializer.cpp	(.../TSQLiteSerializer.cpp)	(revision 9479911a096555a7504c5c8a8eaee83ecb63440c)
@@ -19,23 +19,42 @@
 #include "stdafx.h"
 #include "TSQLiteSerializer.h"
 #include "TSQLiteSerializerContainer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
 using namespace sqlite;
 
-TSQLiteSerializer::TSQLiteSerializer(const TSQLiteDatabasePtr& spDatabase) :
-	m_spDatabase(spDatabase)
+TSQLiteSerializer::TSQLiteSerializer(const TSmartPath& pathDB, const ISerializerSchemaPtr& spSchema) :
+	m_spDatabase(new TSQLiteDatabase(pathDB)),
+	m_spSchema(spSchema)
 {
+	if(!m_spDatabase || !m_spSchema)
+		THROW_CORE_EXCEPTION(eErr_InvalidArgument);
+
+	m_spSchema->Setup(m_spDatabase);
 }
 
 ISerializerContainerPtr TSQLiteSerializer::GetContainer(const TString& strContainerName)
 {
 	std::map<TString, ISerializerContainerPtr>::iterator iterMap = m_mapContainers.find(strContainerName);
 	if(iterMap == m_mapContainers.end())
-		iterMap = m_mapContainers.insert(std::make_pair(strContainerName, TSQLiteSerializerContainerPtr(new TSQLiteSerializerContainer))).first;
+		iterMap = m_mapContainers.insert(std::make_pair(
+		strContainerName,
+		TSQLiteSerializerContainerPtr(new TSQLiteSerializerContainer(strContainerName, m_spDatabase)))).first;
 
 	return iterMap->second;
 }
 
+chcore::TSmartPath TSQLiteSerializer::GetLocation() const
+{
+	return m_spDatabase->GetLocation();
+}
+
+void TSQLiteSerializer::Flush()
+{
+	// TODO: generate the necessary queries and execute them
+}
+
 END_CHCORE_NAMESPACE