diff --git a/db/db.go b/db/db.go index 6a83e7a..5b182cd 100644 --- a/db/db.go +++ b/db/db.go @@ -48,7 +48,7 @@ func (d *Database) Open() error { log.Fatal("undefined DB_PASS env") } - dsn := fmt.Sprintf("%s:%s@%s/%s", user, pass, host, DBName) + dsn := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", user, pass, host, DBName) log.Printf("Opening SQL at %s\n", dsn) diff --git a/docker-compose.yml b/docker-compose.yml index 1c64817..67dc85e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,12 @@ version: "3.4" volumes: - db: - maria-conf: + redis-db: postgresql: file-storage: - #sqlite: gocache: + #sqlite: + #maria-conf: services: app: @@ -16,7 +16,7 @@ services: - GO111MODULE=on - BIT4SAT_STORAGE_PATH=/storage - GOPATH=/go - - DB_HOST=maria + - DB_HOST=postgres - DB_USER=bit4sat - DB_PASS=bit4sat - LN_CHARGE_API=10.192.122.10:9112 @@ -36,17 +36,17 @@ services: working_dir: /src - maria: - image: mariadb:latest - environment: - - MYSQL_ROOT_PASSWORD=pass - - MYSQL_DATABASE=bit4sat - - MYSQL_USER=bit4sat - - MYSQL_PASSWORD=bit4sat + #maria: + #image: mariadb:latest + #environment: + #- MYSQL_ROOT_PASSWORD=pass + #- MYSQL_DATABASE=bit4sat + #- MYSQL_USER=bit4sat + #- MYSQL_PASSWORD=bit4sat - volumes: - - db:/var/lib/mysql - - maria-conf:/etc/mysql + #volumes: + #- db:/var/lib/mysql + #- maria-conf:/etc/mysql postgres: image: postgres:11.2 environment: @@ -63,7 +63,7 @@ services: image: redis:alpine volumes: - - db:/data + - redis-db:/data command: - redis-server diff --git a/storage/upload_model.go b/storage/upload_model.go index c66bd90..089175c 100644 --- a/storage/upload_model.go +++ b/storage/upload_model.go @@ -18,21 +18,20 @@ var DB = db.DB const ( DBUploadSchema = ` CREATE TABLE IF NOT EXISTS upload ( - id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - upload_id CHAR(27) NOT NULL, - sha256 CHAR(64) NOT NULL, - file_name CHAR(255) NOT NULL, - file_type CHAR(255) DEFAULT '', - file_size INT NOT NULL, - file_ext CHAR(255) DEFAULT '', - status INT DEFAULT 0, - FOREIGN KEY (status) REFERENCES upload_status(type), + id serial PRIMARY KEY, + upload_id varchar(27) NOT NULL, + sha256 varchar(64) NOT NULL, + file_name varchar(255) NOT NULL, + file_type varchar(255) DEFAULT '', + file_size integer NOT NULL, + file_ext varchar(255) DEFAULT '', + status integer DEFAULT 0 REFERENCES upload_status(type), UNIQUE (upload_id, sha256) ); ` DBUploadView = ` -CREATE VIEW IF NOT EXISTS upload_with_status +CREATE OR REPLACE VIEW upload_with_status AS SELECT upload.upload_id, upload.sha256, @@ -67,7 +66,7 @@ upload.status = upload_status.type file_size, file_ext, status -FROM upload WHERE sha256 = ? AND upload_id = ?` +FROM upload WHERE sha256 = $1 AND upload_id = $2` ) const ( @@ -189,9 +188,9 @@ func init() { } // Populate status types - query := `INSERT INTO upload_status - (type, status) VALUES(?,?) - ON DUPLICATE KEY UPDATE status = ?` + query := `INSERT INTO upload_status (type, status) + VALUES($1,$2) ON CONFLICT (type) DO UPDATE + SET status = $3` for k, v := range UploadStatus { _, err := DB.Sql.Exec(query, k, v, v) if err != nil {