libdballe  9.11
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
dballe::db::v7::Repinfo Struct Referenceabstract

Fast cached access to the repinfo table. More...

#include <repinfo.h>

Inheritance diagram for dballe::db::v7::Repinfo:
dballe::db::v7::mysql::MySQLRepinfoV7 dballe::db::v7::postgresql::PostgreSQLRepinfo dballe::db::v7::sqlite::SQLiteRepinfoV7

Public Member Functions

 Repinfo (dballe::sql::Connection &conn)
 
const char * get_rep_memo (int id)
 Get the rep_memo for a given ID; throws if id is not valud.
 
int get_id (const char *rep_memo)
 Get the ID for a given rep_memo; returns -1 if rep_memo is not valid.
 
int get_priority (const std::string &report)
 Get the priority for a given ID; returns INT_MAX if id is not valid.
 
void update (const char *deffile, int *added, int *deleted, int *updated)
 Update the report type information in the database using the data from the given file. More...
 
std::map< std::string, int > get_priorities ()
 Get a mapping between rep_memo and their priorities.
 
std::vector< int > ids_by_prio (const core::Query &rec)
 Return a vector of IDs matching the priority constraints in the given record.
 
int obtain_id (const char *memo)
 Get the id of a repinfo entry given its name. More...
 
virtual void dump (FILE *out)=0
 Dump the entire contents of the database to an output stream.
 
virtual void read_cache ()=0
 Reread the repinfo cache from the database FIXME: needed when rolling back a transaction, won't be needed anymore when repinfo is moved to Transaction instead of db.
 

Public Attributes

dballe::sql::Connectionconn
 

Protected Member Functions

const repinfo::Cacheget_by_id (unsigned id) const
 Get a Cache entry by database ID.
 
const repinfo::Cacheget_by_memo (const char *memo) const
 Get a Cache entry by report name.
 
int cache_find_by_id (unsigned id) const
 Lookup a cache index by database ID. Returns -1 if not found.
 
int cache_find_by_memo (const char *memo) const
 Lookup a cache index by report name. Returns -1 if not found.
 
void cache_append (unsigned id, const char *memo, const char *desc, int prio, const char *descriptor, int tablea)
 Append an entry to the cache.
 
void rebuild_memo_idx () const
 Rebuild the memo_idx cache.
 
std::vector< repinfo::Cacheread_repinfo_file (const char *deffile)
 Read cache entries from a repinfo file on disk.
 
virtual int id_use_count (unsigned id, const char *name)=0
 Return how many time this ID is used in the database.
 
virtual void delete_entry (unsigned id)=0
 Delete a repinfo entry.
 
virtual void update_entry (const repinfo::Cache &entry)=0
 Update an entry using the new_* fields of entry.
 
virtual void insert_entry (const repinfo::Cache &entry)=0
 Insert an entry using the new_* fields of entry.
 
virtual void insert_auto_entry (const char *memo)=0
 Create an automatic entry for a missing memo, and insert it in the database.
 

Protected Attributes

std::vector< repinfo::Cachecache
 Cache of table entries.
 
std::vector< repinfo::Memoidxmemo_idx
 rep_memo -> rep_cod reverse index
 

Detailed Description

Fast cached access to the repinfo table.

Member Function Documentation

◆ obtain_id()

int dballe::db::v7::Repinfo::obtain_id ( const char *  memo)

Get the id of a repinfo entry given its name.

It creates a new entry if the memo is missing from the database.

Parameters
memoThe name to query
Returns
The resulting id.

◆ update()

void dballe::db::v7::Repinfo::update ( const char *  deffile,
int *  added,
int *  deleted,
int *  updated 
)

Update the report type information in the database using the data from the given file.

Parameters
deffilePathname of the file to use for the update. The NULL value is accepted and means to use the default configure repinfo.csv file.
Return values
addedNumber of entries that have been added during the update.
deletedNumber of entries that have been deleted during the update.
updatedNumber of entries that have been updated during the update.

The documentation for this struct was generated from the following file: