summaryrefslogtreecommitdiff
path: root/src/database/database.cpp
AgeCommit message (Collapse)Author
2018-07-14Fix a compile error with GCC 5.xlouiz’
fix #3366
2018-04-29mam: Send “fin complete” only when appropriatelouiz’
Also simplify how we did the whole “limit + 1” And fix one bad interpretation of the XEP for the case where the query has no after or before restriction. fix #3349
2018-04-24Only use the ID to order archiveslouiz’
fix #3343
2018-04-24Revert "Use a different Date data type"louiz’
This reverts commit 857c7d3972a03cbeebf730d99b924d3710dee6a0.
2018-04-24Revert "Use the Date to find a next page in RSM, not the id"louiz’
This reverts commit 5ef7ba08028065b03d51d1dc70bb35aeb41ae19d.
2018-04-14Use the Date to find a next page in RSM, not the idlouiz’
This way, it works, whatever the order of insertion in the database was. fix #3343
2018-04-13Refactor that fixes a compilation issue in Release modelouiz’
Some template specialization were not found, because they were not declared at the point they were used. We moved things around, things are less inter-dependant, and also now it works.
2018-04-11Use a different Date data typelouiz’
PLEASE backup your database before testing this commit, and report any migration issue. In postgresql, we use timestamp with timezone. In sqlite3 we use REAL (the date is expressed as julianday) This requires a migration of the muclogline_ table: In postgresql it’s pretty simple, we convert all the integer into timestamps With sqlite3, we actually rename the table, create the new one with the correct type, then copy everything to the new table, with a conversion function for the Date_ column, and then we delete the old table. fix #3343
2018-03-18Reflect message IDs in channel MUCslouiz’
fix #3283
2018-03-18Use a transaction around the DELETE + INSERT of the after_connection_commandslouiz’
Otherwise we can imagine that two clients changing this value at the same time would mix things up. ref #3275
2018-03-18Allow the execution of multiple commands after the IRC connectionlouiz’
fix #3275
2018-02-16Sort archive messages by date (and only then by id)louiz’
fix #3337 Because apparently the IDs are not always incrementing. We still use them to know the order of two messages that were received at the same second (in this case, the ID will always be incrementing).
2018-02-13Support the <before/> element in MAM requestslouiz’
2018-02-13Use the same function for both history orderslouiz’
2018-02-10Handle the “after” RSM value to page through resultslouiz’
2018-02-10Always return the oldest matching messages from MAM, even if no date is setlouiz’
2017-12-16db_name also accepts postgres:// scheme for PostgreSQL connectionslouiz’
2017-12-02Handle postgresql and sqlite3 libs properlylouiz’
Do not fail to compile when one of them is missing but the other one is not. Raise an error when trying to open a database with the missing library. see #3237
2017-12-02Actually free the database on Database::close()Jonas Wielicki
.release() returns the pointer and releases ownership *without* destruction.
2017-12-02Support for full postgresql URIsJonas Wielicki
(cf. https://www.postgresql.org/docs/9.4/static/libpq-connect.html#LIBPQ-CONNSTRING)
2017-12-02Add postgresql supportlouiz’
2017-09-21compat: revert to using sqlite's close() function for compat with older distros.Romain DEP.
close_v2(), in use before this commit, was introduced as part of sqlite 3.7.14 (2012-09-03), and is as such incompatible with debian wheezy (3.7.13) and centos6 (3.6.20). FTR, Wheezy will be supported until May 2018, and centos6, until November 2020.
2017-09-09Add the persistent_by_default configuration optionlouiz’
fix #3293
2017-08-26Add an index for the muc_log_line tablelouiz’
This immensely speeds up the archive select queries. fix #3292
2017-08-26Cache the encoding_in database value, to avoid doing a query for each messagelouiz’
2017-08-19Fix a sqlite3 leak when the database fails to openlouiz’
2017-08-19Display the correct error message when we fail to open the sqlite3 dblouiz’
fix #3290
2017-07-16Use a db roster to manage biboumi’s presence with the contactslouiz’
2017-06-23Move a few functions from select_query to querylouiz’
2017-06-22Set the database pointer to nullptr after a closelouiz’
2017-06-21Re-implement correctly the handling of failure to open the databaselouiz’
If we can’t open it at startup, we exit. If we can’t open it on reload, we keep the previously-opened database. This way, we’re assured to always have a valid and open database available.
2017-06-16At startup, upgrade all database tables by adding missing columnslouiz’
2017-06-14Implement our own database ORM, and update the whole code to use itlouiz’
Entirely replace LiteSQL fix #3271
2017-03-30Add the archive ID to messages when they are sent to userslouiz’
This makes us compatible with mam 6.0 fix #3249
2017-03-29Remove two sneaky log_debuglouiz’
2016-12-10Properly convert the data into a number of seconds by using duration_castlouiz’
2016-09-29Look for uuid/uuid.h instead of just uuid.hlouiz’
Avoids a conflict between /usr/include/uuid.h and /usr/local/include/uuid/uuid.h on freebsd
2016-09-04MAM results can be filtered by start and end dateslouiz’
2016-08-28Respond to MAM requests on a channel JIDlouiz’
At the moment, result-set-management is not implemented, the whole history (well, at most 1024 messages) is returned.
2016-08-23If the maxHistoryLength is negative, make it 0louiz’
Instead of doing a broken SQL request that returns weird lines
2016-08-22When joining a channel, send the most recent history found in the databaselouiz’
2016-08-22When saving the logs, the date must be in seconds, not nanosecondslouiz’
2016-08-22Add a global configure ad-hoc command, with max history lengthlouiz’
2016-08-21Add get_first_non_empty and use it into Database to simplify a little bitlouiz’
2016-08-12Save received and sent messages into the databaselouiz’
2016-07-12Properly catch and handle database errorslouiz’
Do not use a singleton for the database. fix #3203
2016-01-04Add a ChannelOptions table in the DBFlorent Le Coz
And a way to retrieve its values, defaulting on the ServerOptions for unset values.
2015-10-29Remove a write to std::cout from Database’s constructorFlorent Le Coz
2015-10-24Only compile database.cpp if configured with litesqlFlorent Le Coz
2015-09-18Introduce an optional Database moduleFlorent Le Coz
Uses litesql