/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #ifndef headerfile_winix_db_db #define headerfile_winix_db_db #include #include #include #include #include #include "dbbase.h" #include "dbitemquery.h" #include "dbitemcolumns.h" #include "core/item.h" #include "core/user.h" #include "core/group.h" #include "core/thread.h" #include "core/dircontainer.h" #include "core/ugcontainer.h" class Db : public DbBase { public: // !! przerobic tak aby GetItem zwracalo wszystkie pozycja // !! GetFile tylko dla plikow // !! GetDir tylko dla katalogow // !! GetFile i GetDir beda uzywac GetItem bool CheckUser(const std::wstring & login, const std::wstring & password, long & user_id); Error AddUser(User & user, const std::wstring & password); Error AddItem(Item & item); Error EditItemById(Item & item, bool with_url = true); Error EditItemByUrl(Item & item, bool with_url = true); void CheckAllUrlSubject(); // !! nie zwracac zadnych kodow bledow? void GetItems(std::vector & item_tab, const DbItemQuery & item_query); void GetItems(std::vector & item_tab, const DbItemQuery & item_query); // !! pobiera tylko jeden item (cos wymyslec innego z nazwa albo argumentem) void GetItem(std::vector & item_tab, long id); bool GetPriv(Item & item, long id); Error EditPrivById(Item & item, long id); Error EditParentUrlById(Item & item, long id); Error EditFileById(const Item & item, long id); // file_path, file_fs, file_type Error EditHasThumbById(bool has_thumb, long id); Error DelDirById(long id); Error EditSubjectById(Item & item, long id); bool DelItem(const Item & item); void GetDirs(DirContainer & dir_tab); void GetUsers(UGContainer & user_tab); void GetGroups(UGContainer & group_tab); // !! nowy interfejs long Size(long parent_id, Item::Type type = Item::none); Error GetItemById(long item_id, Item & item); Error GetItem(long parent_id, const std::wstring & url, Item & item); Error EditDefaultItem(long id, long new_default_item); Error EditTemplateItemById(long id, const std::wstring & new_html_template); long GetItemId(long parent_id, const std::wstring & url, Item::Type type); long GetFileId(long parent_id, const std::wstring & url); long GetDirId(long parent_id, const std::wstring & url); Error AddThread(Thread & thread); Error GetThreadByDirId(long dir_id, Thread & thread); Error GetThreads(long parent_id, std::vector & thread_tab); Error EditThreadAddItem(long dir_id, long item_id); Error EditThreadRemoveItem(long dir_id); Error RemoveThread(long dir_id); protected: DbTextStream query, query_create_url; std::wstring temp_url; bool AddItemCreateUrlSubject(Item & item); Error AddItemIntoContent(Item & item); Error AddItemIntoItem(Item & item); Error EditItemInItem(Item & item, bool with_url); Error EditItemInContent(Item & item); Error EditItemGetId(Item & item); Error EditItemGetContentId(Item & item); void CheckAllUrlSubjectModifyItem(Item & item); PGresult * GetItemsQuery(const DbItemQuery & iq, bool skip_other_sel = false); bool DelItemDelItem(const Item & item); void DelItemDelContent(const Item & item); Error DelItemCountContents(const Item & item, long & contents); }; #endif