static uint64_t get_mailbox_id(const char *name) { uint64_t id, owner; auth_user_exists("testuser1",&owner); db_find_create_mailbox(name, BOX_COMMANDLINE, owner, &id); return id; }
static int db_createsession(uint64_t user_idnr, ClientSession_T * session) { Connection_T c; ResultSet_T r; volatile int t = DM_SUCCESS; struct message *tmpmessage; int message_counter = 0; const char *query_result; uint64_t mailbox_idnr; INIT_QUERY; if (db_find_create_mailbox("INBOX", BOX_DEFAULT, user_idnr, &mailbox_idnr) < 0) { TRACE(TRACE_NOTICE, "find_create INBOX for user [%" PRIu64 "] failed, exiting..", user_idnr); return DM_EQUERY; } g_return_val_if_fail(mailbox_idnr > 0, DM_EQUERY); /* query is < MESSAGE_STATUS_DELETE because we don't want deleted * messages */ snprintf(query, DEF_QUERYSIZE-1, "SELECT pm.messagesize, msg.message_idnr, msg.status, " "msg.unique_id FROM %smessages msg, %sphysmessage pm " "WHERE msg.mailbox_idnr = %" PRIu64 " " "AND msg.status < %d " "AND msg.physmessage_id = pm.id " "ORDER BY msg.message_idnr ASC",DBPFX,DBPFX, mailbox_idnr, MESSAGE_STATUS_DELETE); c = db_con_get(); TRY r = db_query(c, query); session->totalmessages = 0; session->totalsize = 0; /* messagecounter is total message, +1 tot end at message 1 */ message_counter = 1; /* filling the list */ TRACE(TRACE_DEBUG, "adding items to list"); while (db_result_next(r)) { tmpmessage = mempool_pop(session->pool, sizeof(struct message)); /* message size */ tmpmessage->msize = db_result_get_u64(r,0); /* real message id */ tmpmessage->realmessageid = db_result_get_u64(r,1); /* message status */ tmpmessage->messagestatus = db_result_get_u64(r,2); /* virtual message status */ tmpmessage->virtual_messagestatus = tmpmessage->messagestatus; /* unique id */ query_result = db_result_get(r,3); if (query_result) strncpy(tmpmessage->uidl, query_result, UID_SIZE-1); session->totalmessages++; session->totalsize += tmpmessage->msize; tmpmessage->messageid = (uint64_t) message_counter; session->messagelst = p_list_append(session->messagelst, tmpmessage); message_counter++; } CATCH(SQLException) LOG_SQLERROR; t = DM_EQUERY; FINALLY db_con_close(c); END_TRY; if (t == DM_EQUERY) return t; if (message_counter == 1) { /* there are no messages for this user */ return DM_EGENERAL; } TRACE(TRACE_DEBUG, "adding succesful"); /* setting all virtual values */ session->virtual_totalmessages = session->totalmessages; session->virtual_totalsize = session->totalsize; return DM_EGENERAL; }