mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
Make CREATE TABLE compatible with SQLite
This commit is contained in:
parent
452017a58b
commit
00da45191c
|
@ -6,8 +6,8 @@ void IDbConnection::FormatCreateRace(char *aBuf, unsigned int BufferSize)
|
||||||
{
|
{
|
||||||
str_format(aBuf, BufferSize,
|
str_format(aBuf, BufferSize,
|
||||||
"CREATE TABLE IF NOT EXISTS %s_race ("
|
"CREATE TABLE IF NOT EXISTS %s_race ("
|
||||||
"Map VARCHAR(128) BINARY NOT NULL, "
|
"Map VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Name VARCHAR(%d) BINARY NOT NULL, "
|
"Name VARCHAR(%d) COLLATE %s NOT NULL, "
|
||||||
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
||||||
"Time FLOAT DEFAULT 0, "
|
"Time FLOAT DEFAULT 0, "
|
||||||
"Server CHAR(4), "
|
"Server CHAR(4), "
|
||||||
|
@ -21,66 +21,64 @@ void IDbConnection::FormatCreateRace(char *aBuf, unsigned int BufferSize)
|
||||||
"cp22 FLOAT DEFAULT 0, cp23 FLOAT DEFAULT 0, cp24 FLOAT DEFAULT 0, "
|
"cp22 FLOAT DEFAULT 0, cp23 FLOAT DEFAULT 0, cp24 FLOAT DEFAULT 0, "
|
||||||
"cp25 FLOAT DEFAULT 0, "
|
"cp25 FLOAT DEFAULT 0, "
|
||||||
"GameID VARCHAR(64), "
|
"GameID VARCHAR(64), "
|
||||||
"DDNet7 BOOL DEFAULT FALSE, "
|
"DDNet7 BOOL DEFAULT FALSE"
|
||||||
"KEY (Map, Name)"
|
");",
|
||||||
") CHARACTER SET utf8mb4;",
|
GetPrefix(), BinaryCollate(), MAX_NAME_LENGTH, BinaryCollate());
|
||||||
GetPrefix(), MAX_NAME_LENGTH);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDbConnection::FormatCreateTeamrace(char *aBuf, unsigned int BufferSize)
|
void IDbConnection::FormatCreateTeamrace(char *aBuf, unsigned int BufferSize, const char *pIdType)
|
||||||
{
|
{
|
||||||
str_format(aBuf, BufferSize,
|
str_format(aBuf, BufferSize,
|
||||||
"CREATE TABLE IF NOT EXISTS %s_teamrace ("
|
"CREATE TABLE IF NOT EXISTS %s_teamrace ("
|
||||||
"Map VARCHAR(128) BINARY NOT NULL, "
|
"Map VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Name VARCHAR(%d) BINARY NOT NULL, "
|
"Name VARCHAR(%d) COLLATE %s NOT NULL, "
|
||||||
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
||||||
"Time FLOAT DEFAULT 0, "
|
"Time FLOAT DEFAULT 0, "
|
||||||
"ID VARBINARY(16) NOT NULL, "
|
"ID %s NOT NULL, " // VARBINARY(16) for MySQL and BLOB for SQLite
|
||||||
"GameID VARCHAR(64), "
|
"GameID VARCHAR(64), "
|
||||||
"DDNet7 BOOL DEFAULT FALSE, "
|
"DDNet7 BOOL DEFAULT FALSE"
|
||||||
"KEY Map (Map)"
|
");",
|
||||||
") CHARACTER SET utf8mb4;",
|
GetPrefix(), BinaryCollate(), MAX_NAME_LENGTH, BinaryCollate(), pIdType);
|
||||||
GetPrefix(), MAX_NAME_LENGTH);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDbConnection::FormatCreateMaps(char *aBuf, unsigned int BufferSize)
|
void IDbConnection::FormatCreateMaps(char *aBuf, unsigned int BufferSize)
|
||||||
{
|
{
|
||||||
str_format(aBuf, BufferSize,
|
str_format(aBuf, BufferSize,
|
||||||
"CREATE TABLE IF NOT EXISTS %s_maps ("
|
"CREATE TABLE IF NOT EXISTS %s_maps ("
|
||||||
"Map VARCHAR(128) BINARY NOT NULL, "
|
"Map VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Server VARCHAR(32) BINARY NOT NULL, "
|
"Server VARCHAR(32) COLLATE %s NOT NULL, "
|
||||||
"Mapper VARCHAR(128) BINARY NOT NULL, "
|
"Mapper VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Points INT DEFAULT 0, "
|
"Points INT DEFAULT 0, "
|
||||||
"Stars INT DEFAULT 0, "
|
"Stars INT DEFAULT 0, "
|
||||||
"Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
"Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
||||||
"UNIQUE KEY Map (Map)"
|
"PRIMARY KEY (Map)"
|
||||||
") CHARACTER SET utf8mb4;",
|
");",
|
||||||
GetPrefix());
|
GetPrefix(), BinaryCollate(), BinaryCollate(), BinaryCollate());
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDbConnection::FormatCreateSaves(char *aBuf, unsigned int BufferSize)
|
void IDbConnection::FormatCreateSaves(char *aBuf, unsigned int BufferSize)
|
||||||
{
|
{
|
||||||
str_format(aBuf, BufferSize,
|
str_format(aBuf, BufferSize,
|
||||||
"CREATE TABLE IF NOT EXISTS %s_saves ("
|
"CREATE TABLE IF NOT EXISTS %s_saves ("
|
||||||
"Savegame TEXT CHARACTER SET utf8mb4 BINARY NOT NULL, "
|
"Savegame TEXT COLLATE %s NOT NULL, "
|
||||||
"Map VARCHAR(128) BINARY NOT NULL, "
|
"Map VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Code VARCHAR(128) BINARY NOT NULL, "
|
"Code VARCHAR(128) COLLATE %s NOT NULL, "
|
||||||
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
"Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "
|
||||||
"Server CHAR(4), "
|
"Server CHAR(4), "
|
||||||
"DDNet7 BOOL DEFAULT FALSE, "
|
"DDNet7 BOOL DEFAULT FALSE, "
|
||||||
"SaveID VARCHAR(36) DEFAULT NULL, "
|
"SaveID VARCHAR(36) DEFAULT NULL, "
|
||||||
"UNIQUE KEY (Map, Code)"
|
"PRIMARY KEY (Map, Code)"
|
||||||
") CHARACTER SET utf8mb4;",
|
");",
|
||||||
GetPrefix());
|
GetPrefix(), BinaryCollate(), BinaryCollate(), BinaryCollate());
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDbConnection::FormatCreatePoints(char *aBuf, unsigned int BufferSize)
|
void IDbConnection::FormatCreatePoints(char *aBuf, unsigned int BufferSize)
|
||||||
{
|
{
|
||||||
str_format(aBuf, BufferSize,
|
str_format(aBuf, BufferSize,
|
||||||
"CREATE TABLE IF NOT EXISTS %s_points ("
|
"CREATE TABLE IF NOT EXISTS %s_points ("
|
||||||
"Name VARCHAR(%d) BINARY NOT NULL, "
|
"Name VARCHAR(%d) COLLATE %s NOT NULL, "
|
||||||
"Points INT DEFAULT 0, "
|
"Points INT DEFAULT 0, "
|
||||||
"UNIQUE KEY Name (Name)"
|
"PRIMARY KEY (Name)"
|
||||||
") CHARACTER SET utf8mb4;",
|
");",
|
||||||
GetPrefix(), MAX_NAME_LENGTH);
|
GetPrefix(), MAX_NAME_LENGTH, BinaryCollate());
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ public:
|
||||||
|
|
||||||
// returns the database prefix
|
// returns the database prefix
|
||||||
const char *GetPrefix() { return m_aPrefix; }
|
const char *GetPrefix() { return m_aPrefix; }
|
||||||
|
virtual const char *BinaryCollate() const = 0;
|
||||||
|
|
||||||
enum Status
|
enum Status
|
||||||
{
|
{
|
||||||
|
@ -59,7 +60,7 @@ private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void FormatCreateRace(char *aBuf, unsigned int BufferSize);
|
void FormatCreateRace(char *aBuf, unsigned int BufferSize);
|
||||||
void FormatCreateTeamrace(char *aBuf, unsigned int BufferSize);
|
void FormatCreateTeamrace(char *aBuf, unsigned int BufferSize, const char *pIdType);
|
||||||
void FormatCreateMaps(char *aBuf, unsigned int BufferSize);
|
void FormatCreateMaps(char *aBuf, unsigned int BufferSize);
|
||||||
void FormatCreateSaves(char *aBuf, unsigned int BufferSize);
|
void FormatCreateSaves(char *aBuf, unsigned int BufferSize);
|
||||||
void FormatCreatePoints(char *aBuf, unsigned int BufferSize);
|
void FormatCreatePoints(char *aBuf, unsigned int BufferSize);
|
||||||
|
|
|
@ -119,7 +119,7 @@ IDbConnection::Status CMysqlConnection::Connect()
|
||||||
m_pConnection->setSchema(m_aDatabase);
|
m_pConnection->setSchema(m_aDatabase);
|
||||||
FormatCreateRace(aBuf, sizeof(aBuf));
|
FormatCreateRace(aBuf, sizeof(aBuf));
|
||||||
m_pStmt->execute(aBuf);
|
m_pStmt->execute(aBuf);
|
||||||
FormatCreateTeamrace(aBuf, sizeof(aBuf));
|
FormatCreateTeamrace(aBuf, sizeof(aBuf), "VARBINARY(16)");
|
||||||
m_pStmt->execute(aBuf);
|
m_pStmt->execute(aBuf);
|
||||||
FormatCreateMaps(aBuf, sizeof(aBuf));
|
FormatCreateMaps(aBuf, sizeof(aBuf));
|
||||||
m_pStmt->execute(aBuf);
|
m_pStmt->execute(aBuf);
|
||||||
|
|
|
@ -28,6 +28,8 @@ public:
|
||||||
|
|
||||||
virtual CMysqlConnection *Copy();
|
virtual CMysqlConnection *Copy();
|
||||||
|
|
||||||
|
virtual const char *BinaryCollate() const { return "utf8mb4_bin"; }
|
||||||
|
|
||||||
virtual Status Connect();
|
virtual Status Connect();
|
||||||
virtual void Disconnect();
|
virtual void Disconnect();
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ IDbConnection::Status CSqliteConnection::Connect()
|
||||||
FormatCreateRace(aBuf, sizeof(aBuf));
|
FormatCreateRace(aBuf, sizeof(aBuf));
|
||||||
if(!Execute(aBuf))
|
if(!Execute(aBuf))
|
||||||
return Status::ERROR;
|
return Status::ERROR;
|
||||||
FormatCreateTeamrace(aBuf, sizeof(aBuf));
|
FormatCreateTeamrace(aBuf, sizeof(aBuf), "BLOB");
|
||||||
if(!Execute(aBuf))
|
if(!Execute(aBuf))
|
||||||
return Status::ERROR;
|
return Status::ERROR;
|
||||||
FormatCreateMaps(aBuf, sizeof(aBuf));
|
FormatCreateMaps(aBuf, sizeof(aBuf));
|
||||||
|
|
|
@ -15,6 +15,8 @@ public:
|
||||||
|
|
||||||
virtual CSqliteConnection *Copy();
|
virtual CSqliteConnection *Copy();
|
||||||
|
|
||||||
|
virtual const char *BinaryCollate() const { return "BINARY"; }
|
||||||
|
|
||||||
virtual Status Connect();
|
virtual Status Connect();
|
||||||
virtual void Disconnect();
|
virtual void Disconnect();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue