diff options
author | Mateusz Kaduk <mateusz.kaduk@gmail.com> | 2005-05-23 06:34:22 +0000 |
---|---|---|
committer | Mateusz Kaduk <mateusz.kaduk@gmail.com> | 2005-05-23 06:34:22 +0000 |
commit | 5cf7a669530b9f328fa79c401575cdd0e14a523e (patch) | |
tree | fc1b36b51d995498543aab140493ea3052719084 /src/storage.cpp | |
parent | 795182f6ad0afd57b5490b9fa5417222b2118788 (diff) | |
download | manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.gz manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.bz2 manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.tar.xz manaserv-5cf7a669530b9f328fa79c401575cdd0e14a523e.zip |
Remove main.h, added storage class, moved some code to it
Diffstat (limited to 'src/storage.cpp')
-rw-r--r-- | src/storage.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/storage.cpp b/src/storage.cpp new file mode 100644 index 00000000..af863d47 --- /dev/null +++ b/src/storage.cpp @@ -0,0 +1,84 @@ +/* + * The Mana World Server + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ +#include "storage.h" +#include <iostream> + +Storage::Storage() +{ +#ifdef SQLITE_SUPPORT + // Open database + if (sqlite.Open("tmw.db")) { + std::cout << "Database: tmw.db created or opened" << std::endl; + } + else { + std::cout << "Database: couldn't open tmw.db" << std::endl; + } +#endif +#ifdef PGSQL_SUPPORT + std::cout << "Datbase: Postgresql currently not supported" << std::endl; + exit(1); +#endif + + //Create tables + create_tables_if_necessary(); +} + +Storage::~Storage() +{ +#ifdef SQLITE_SUPPORT + // Close database + if (sqlite.Close()) { + std::cout << "Database: tmw.db closed" << std::endl; + } + else { + std::cout << "Database: couldn't close tmw.db" << std::endl; + } +#endif +} + +/** + * Create tables if necessary + */ +void Storage::create_tables_if_necessary() +{ +#ifdef SQLITE_SUPPORT + SQLiteWrapper::ResultTable r; + + if (!sqlite.SelectStmt("select count(*) from sqlite_master where tbl_name='topics' and type='table'", r)) { + std::cout << "Error with select count(*) [create_tables_if_necessary]" << sqlite.LastError().c_str() << std::endl; + } + + if (r.records_[0].fields_[0] != "0") + return; + + sqlite.Begin(); + if (sqlite.DirectStatement("create table tmw_accounts(user TEXT, password TEXT, email TEXT)")) { + std::cout << "Database: table tmw_accounts created" << std::endl; + } + else { + std::cout << "Database: table exist" << std::endl; + } + sqlite.Commit(); +#endif +} + |