浏览代码

Make message.CreateTable usable on postgres and sqlite

Nicolas Werner 6 年之前
父节点
当前提交
9dde189438
共有 1 个文件被更改,包括 27 次插入11 次删除
  1. 27 11
      database/message.go

+ 27 - 11
database/message.go

@@ -18,6 +18,7 @@ package database
 
 
 import (
 import (
 	"bytes"
 	"bytes"
+	"strings"
 	"database/sql"
 	"database/sql"
 	"encoding/json"
 	"encoding/json"
 
 
@@ -34,18 +35,33 @@ type MessageQuery struct {
 }
 }
 
 
 func (mq *MessageQuery) CreateTable(dbType string) error {
 func (mq *MessageQuery) CreateTable(dbType string) error {
-	_, err := mq.db.Exec(`CREATE TABLE IF NOT EXISTS message (
-		chat_jid      VARCHAR(255),
-		chat_receiver VARCHAR(255),
-		jid           VARCHAR(255),
-		mxid          VARCHAR(255) NOT NULL UNIQUE,
-		sender        VARCHAR(255)  NOT NULL,
-		content       bytea         NOT NULL,
-
-		PRIMARY KEY (chat_jid, chat_receiver, jid),
-		FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver)
-	)`)
+	if strings.ToLower(dbType) == "postgres" {
+		_, err := mq.db.Exec(`CREATE TABLE IF NOT EXISTS message (
+			chat_jid      VARCHAR(255),
+			chat_receiver VARCHAR(255),
+			jid           VARCHAR(255),
+			mxid          VARCHAR(255) NOT NULL UNIQUE,
+			sender        VARCHAR(255)  NOT NULL,
+			content       bytea         NOT NULL,
+
+			PRIMARY KEY (chat_jid, chat_receiver, jid),
+			FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver)
+		)`)
+		return err
+	} else {
+		_, err := mq.db.Exec(`CREATE TABLE IF NOT EXISTS message (
+			chat_jid      VARCHAR(255),
+			chat_receiver VARCHAR(255),
+			jid           VARCHAR(255),
+			mxid          VARCHAR(255) NOT NULL UNIQUE,
+			sender        VARCHAR(255)  NOT NULL,
+			content       BLOB          NOT NULL,
+
+			PRIMARY KEY (chat_jid, chat_receiver, jid),
+			FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver)
+		)`)
 	return err
 	return err
+	}
 }
 }
 
 
 func (mq *MessageQuery) New() *Message {
 func (mq *MessageQuery) New() *Message {