/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2011, 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/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 GetUserPass(const std::wstring & login, long & user_id, UserPass & up); Error AddUser(User & user, const std::wstring & password, const std::string & password_encrypted, int pass_type, bool pass_hash_salted); Error ChangePass(const std::wstring & login, const std::wstring & password, const std::string & password_encrypted, int pass_type, bool pass_hash_salted); Error AddItem(Item & item); Error EditItemById(Item & item, bool with_url = true); Error EditItemByUrl(Item & item, bool with_url = true); // !! 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); Error GetItem(Item & item, const DbItemQuery & item_query); bool GetPriv(Item & item, long id); Error EditPrivById(Item & item, long id); // !! dlaczego tu nie ma const? 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 EditMetaById(const Space & meta, long id); Error DelDirById(long id); Error DelFileById(long file_id); Error DelSymlinkById(long symlink_id); Error EditSubjectById(Item & item, long id); Error 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 EditLinkItem(long id, const std::wstring & link_to, int link_redirect); 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 AddHardLink(Item & item); Error EditSortIndexItemById(long id, int sort_index); protected: DbTextStream query, query_create_url; std::wstring temp_url; Item dir_temp; Item get_item_temp; std::wstring iq_id_list; DbItemColumns item_cols; TextStream meta_stream; bool AddItemCreateUrlSubject(Item & item); Error AddItemIntoContent(Item & item); Error AddItemIntoItem(Item & item); Error EditItemInItem(Item & item, bool with_url); Error EditItemInContent(Item & item); Error EditItemGetIdsByUrl(Item & item); long GetContentId(long item_id); Error DelItemDelItem(long item_id, int type); Error DelItemDelContent(long content_id); Error IncrementContentRef(long content_id); Error DecrementContentRef(long content_id); void GetItemsQuerySelect(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel); void GetItemsQueryJoin(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryWhere(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryOrder(const DbItemQuery & iq, DbTextStream & query); void GetItemsQueryLimit(const DbItemQuery & iq, DbTextStream & query); PGresult * GetItemsQuery(const DbItemQuery & iq, DbTextStream & query, bool skip_other_sel = false); PGresult * GetItemsQuery(const DbItemQuery & iq, bool skip_other_sel = false); }; #endif