/* * Copyright (c) 2023 Fancy Code. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef SQLITE_HANDLE_H #define SQLITE_HANDLE_H #include "IFilesManager.h" #include "sqlite3.h" #include #include #include #include #include constexpr int SQLITE_UNDEFINE = -1; class SqliteHandle { public: SqliteHandle(); virtual ~SqliteHandle() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); void Init(const std::string &dbFileName); void UnInit(void); unsigned long int CreateFiles(const unsigned int &count); bool SyncFile(const SyncFileInfo &info); bool SearchFiles(const std::vector &types, std::vector &info); bool Remove(); bool Modified(); bool Serach(); private: static void DbInit(sqlite3 *db); static bool UpdateCreateTime(sqlite3 *db, const unsigned long &key, const time_t &createTime); static bool UpdateFileName(sqlite3 *db, const unsigned long &key, const std::string &fileName); static bool UpdateFileSize(sqlite3 *db, const unsigned long &key, const unsigned long &fileSize); static bool UpdateFileType(sqlite3 *db, const unsigned long &key, const FileCreateType &type); static bool UpdateFileDuration(sqlite3 *db, const unsigned long &key, const unsigned int &duration); static bool SearchFiles(sqlite3 *db, const std::string &sql, std::vector &info); static std::string ConvertFileTypeToString(const FileCreateType &type); static FileCreateType ConvertStringToFileType(const std::string &type); static bool UpdateFileStatus(sqlite3 *db, const unsigned long &key, const FileStatus &status); static std::string ConvertFileStatusToString(const FileStatus &status); static FileStatus ConvertStringToFileStatus(const std::string &status); private: sqlite3 *mDb; }; #endif