/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2011, Tomasz Sowa * All rights reserved. * */ #include "dbitemcolumns.h" #include "dbbase.h" #include "core/log.h" void DbItemColumns::SetColumns(PGresult * r) { // PQfnumber returns -1 if there is no such a column id = PQfnumber(r, "id"); user_id = PQfnumber(r, "user_id"); group_id = PQfnumber(r, "group_id"); privileges = PQfnumber(r, "privileges"); date_creation = PQfnumber(r, "date_creation"); date_modification = PQfnumber(r, "date_modification"); url = PQfnumber(r, "url"); type = PQfnumber(r, "type"); parent_id = PQfnumber(r, "parent_id"); content_id = PQfnumber(r, "content_id"); link_to = PQfnumber(r, "link_to"); link_redirect = PQfnumber(r, "link_redirect"); subject = PQfnumber(r, "subject"); content = PQfnumber(r, "content"); content_type = PQfnumber(r, "content_type"); guest_name = PQfnumber(r, "guest_name"); html_template = PQfnumber(r, "template"); modification_user_id = PQfnumber(r, "modification_user_id"); file_path = PQfnumber(r, "file_path"); file_fs = PQfnumber(r, "file_fs"); file_type = PQfnumber(r, "file_type"); has_thumb = PQfnumber(r, "has_thumb"); hash = PQfnumber(r, "hash"); hash_type = PQfnumber(r, "hash_type"); file_size = PQfnumber(r, "file_size"); ref = PQfnumber(r, "ref"); modify_index = PQfnumber(r, "modify_index"); sort_index = PQfnumber(r, "sort_index"); meta = PQfnumber(r, "meta"); } void DbItemColumns::SetMeta(PGresult * r, long row, Item & item) { DbBase::AssertValueWide(r, row, meta, meta_str); item.meta.Clear(); conf_parser.SetSpace(item.meta); conf_parser.UTF8(true); // from the db we always have UTF-8 string conf_parser.SplitSingle(true); if( conf_parser.ParseString(meta_str) != ConfParser::ok ) { log << log1 << "Db: syntax error when parsing meta information for" << " item id: " << item.id << ", url: " << item.url << ", line: " << conf_parser.line << logend; } meta_str.clear(); } void DbItemColumns::SetItem(PGresult * r, long row, Item & item) { if( id != -1 ) item.id = DbBase::AssertValueLong(r, row, id); if( user_id != -1 ) item.user_id = DbBase::AssertValueLong(r, row, user_id); if( group_id != -1 ) item.group_id = DbBase::AssertValueLong(r, row, group_id); if( privileges != -1 ) item.privileges = DbBase::AssertValueInt(r, row, privileges); if( date_creation != -1 ) item.date_creation = DbBase::AssertValueTm(r, row, date_creation); if( date_modification != -1 ) item.date_modification = DbBase::AssertValueTm(r, row, date_modification); if( type != -1 ) item.type = static_cast( DbBase::AssertValueInt(r, row, type) ); if( parent_id != -1 ) item.parent_id = DbBase::AssertValueLong(r, row, parent_id); if( content_id != -1 ) item.content_id = DbBase::AssertValueLong(r, row, content_id); if( link_redirect != -1 ) item.link_redirect = DbBase::AssertValueInt(r, row, link_redirect); if( content_type != -1 ) item.content_type = static_cast( DbBase::AssertValueInt(r, row, content_type) ); if( modification_user_id != -1 ) item.modification_user_id = DbBase::AssertValueLong(r, row, modification_user_id); if( file_fs != -1 ) item.file_fs = DbBase::AssertValueInt(r, row, file_fs); if( file_type != -1 ) item.file_type = DbBase::AssertValueInt(r, row, file_type); if( has_thumb != -1 ) item.has_thumb = DbBase::AssertValueBool(r, row, has_thumb); if( hash != -1 ) DbBase::AssertValueWide(r, row, hash, item.hash); if( hash_type != -1 ) item.hash_type = DbBase::AssertValueInt(r, row, hash_type); if( file_size != -1 ) item.file_size = DbBase::AssertValueLong(r, row, file_size); if( ref != -1 ) item.ref = DbBase::AssertValueInt(r, row, ref); if( modify_index != -1 ) item.modify_index = DbBase::AssertValueInt(r, row, modify_index); if( url != -1 ) DbBase::AssertValueWide(r, row, url, item.url); if( content != -1 ) DbBase::AssertValueWide(r, row, content, item.content); if( subject != -1 ) DbBase::AssertValueWide(r, row, subject, item.subject); if( file_path != -1 ) DbBase::AssertValueWide(r, row, file_path, item.file_path); if( link_to != -1 ) DbBase::AssertValueWide(r, row, link_to, item.link_to); if( guest_name != -1 ) DbBase::AssertValueWide(r, row, guest_name, item.guest_name); if( html_template != -1 ) DbBase::AssertValueWide(r, row, html_template, item.html_template); if( sort_index != -1 ) item.sort_index = DbBase::AssertValueInt(r, row, sort_index); if( meta != -1 ) SetMeta(r, row, item); }