1#include "connection.h"
2
3#include <base/str.h>
4
5IDbConnection::IDbConnection(const char *pPrefix)
6{
7 str_copy(dst&: m_aPrefix, src: pPrefix);
8}
9
10void IDbConnection::FormatCreateRace(char *aBuf, unsigned int BufferSize, bool Backup) const
11{
12 str_format(buffer: aBuf, buffer_size: BufferSize,
13 format: "CREATE TABLE IF NOT EXISTS %s_race%s ("
14 " Map VARCHAR(128) COLLATE %s NOT NULL, "
15 " Name VARCHAR(%d) COLLATE %s NOT NULL, "
16 " Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
17 " Time FLOAT DEFAULT 0, "
18 " Server CHAR(4), "
19 " cp1 FLOAT DEFAULT 0, cp2 FLOAT DEFAULT 0, cp3 FLOAT DEFAULT 0, "
20 " cp4 FLOAT DEFAULT 0, cp5 FLOAT DEFAULT 0, cp6 FLOAT DEFAULT 0, "
21 " cp7 FLOAT DEFAULT 0, cp8 FLOAT DEFAULT 0, cp9 FLOAT DEFAULT 0, "
22 " cp10 FLOAT DEFAULT 0, cp11 FLOAT DEFAULT 0, cp12 FLOAT DEFAULT 0, "
23 " cp13 FLOAT DEFAULT 0, cp14 FLOAT DEFAULT 0, cp15 FLOAT DEFAULT 0, "
24 " cp16 FLOAT DEFAULT 0, cp17 FLOAT DEFAULT 0, cp18 FLOAT DEFAULT 0, "
25 " cp19 FLOAT DEFAULT 0, cp20 FLOAT DEFAULT 0, cp21 FLOAT DEFAULT 0, "
26 " cp22 FLOAT DEFAULT 0, cp23 FLOAT DEFAULT 0, cp24 FLOAT DEFAULT 0, "
27 " cp25 FLOAT DEFAULT 0, "
28 " GameId VARCHAR(64), "
29 " DDNet7 BOOL DEFAULT FALSE, "
30 " PRIMARY KEY (Map, Name, Time, Timestamp, Server)"
31 ")",
32 GetPrefix(), Backup ? "_backup" : "",
33 BinaryCollate(), MAX_NAME_LENGTH_SQL, BinaryCollate());
34}
35
36void IDbConnection::FormatCreateTeamrace(char *aBuf, unsigned int BufferSize, const char *pIdType, bool Backup) const
37{
38 str_format(buffer: aBuf, buffer_size: BufferSize,
39 format: "CREATE TABLE IF NOT EXISTS %s_teamrace%s ("
40 " Map VARCHAR(128) COLLATE %s NOT NULL, "
41 " Name VARCHAR(%d) COLLATE %s NOT NULL, "
42 " Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
43 " Time FLOAT DEFAULT 0, "
44 " ID %s NOT NULL, " // VARBINARY(16) for MySQL and BLOB for SQLite
45 " GameId VARCHAR(64), "
46 " DDNet7 BOOL DEFAULT FALSE, "
47 " PRIMARY KEY (Id, Name)"
48 ")",
49 GetPrefix(), Backup ? "_backup" : "",
50 BinaryCollate(), MAX_NAME_LENGTH_SQL, BinaryCollate(), pIdType);
51}
52
53void IDbConnection::FormatCreateMaps(char *aBuf, unsigned int BufferSize) const
54{
55 str_format(buffer: aBuf, buffer_size: BufferSize,
56 format: "CREATE TABLE IF NOT EXISTS %s_maps ("
57 " Map VARCHAR(128) COLLATE %s NOT NULL, "
58 " Server VARCHAR(32) COLLATE %s NOT NULL, "
59 " Mapper VARCHAR(128) COLLATE %s NOT NULL, "
60 " Points INT DEFAULT 0, "
61 " Stars INT DEFAULT 0, "
62 " Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
63 " PRIMARY KEY (Map)"
64 ")",
65 GetPrefix(), BinaryCollate(), BinaryCollate(), BinaryCollate());
66}
67
68void IDbConnection::FormatCreateSaves(char *aBuf, unsigned int BufferSize, bool Backup) const
69{
70 str_format(buffer: aBuf, buffer_size: BufferSize,
71 format: "CREATE TABLE IF NOT EXISTS %s_saves%s ("
72 " Savegame TEXT COLLATE %s NOT NULL, "
73 " Map VARCHAR(128) COLLATE %s NOT NULL, "
74 " Code VARCHAR(128) COLLATE %s NOT NULL, "
75 " Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
76 " Server CHAR(4), "
77 " DDNet7 BOOL DEFAULT FALSE, "
78 " SaveId VARCHAR(36) DEFAULT NULL, "
79 " PRIMARY KEY (Map, Code)"
80 ")",
81 GetPrefix(), Backup ? "_backup" : "",
82 BinaryCollate(), BinaryCollate(), BinaryCollate());
83}
84
85void IDbConnection::FormatCreatePoints(char *aBuf, unsigned int BufferSize) const
86{
87 str_format(buffer: aBuf, buffer_size: BufferSize,
88 format: "CREATE TABLE IF NOT EXISTS %s_points ("
89 " Name VARCHAR(%d) COLLATE %s NOT NULL, "
90 " Points INT DEFAULT 0, "
91 " PRIMARY KEY (Name)"
92 ")",
93 GetPrefix(), MAX_NAME_LENGTH_SQL, BinaryCollate());
94}
95