From a6d82c1f4703a1698e91deb6dd858da4e7de9b73 Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Fri, 4 Nov 2022 17:42:46 +0800 Subject: [PATCH] migrate to postgres --- config.json | 2 +- go.mod | 2 +- go.sum | 4 +- pkg/database/database.go | 4 +- pkg/database/method.go | 25 ++-- pkg/database/method_tag.go | 10 +- pkg/database/sql_stmt.go | 284 ++++++++++++++++++------------------- 7 files changed, 168 insertions(+), 163 deletions(-) diff --git a/config.json b/config.json index 2dd109d..8ffb8a3 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,7 @@ { "api": { "secret": "CHANGE_YOUR_SECRET_HERE", - "database_name": "music.sqlite3", + "database_name": "postgres://postgres:woshimima@localhost/postgres?sslmode=disable", "single_thread": true, "addr": ":8080", "ffmpeg_threads": 1, diff --git a/go.mod b/go.mod index 2b857c9..6b5366b 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/gorilla/sessions v1.2.1 - github.com/mattn/go-sqlite3 v1.14.14 + github.com/lib/pq v1.10.7 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d ) diff --git a/go.sum b/go.sum index 8227aff..a0c606b 100644 --- a/go.sum +++ b/go.sum @@ -2,7 +2,7 @@ github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyC github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= diff --git a/pkg/database/database.go b/pkg/database/database.go index 176278c..81feab5 100644 --- a/pkg/database/database.go +++ b/pkg/database/database.go @@ -4,7 +4,7 @@ import ( "database/sql" "sync" - _ "github.com/mattn/go-sqlite3" + _ "github.com/lib/pq" ) type Database struct { @@ -41,7 +41,7 @@ func NewDatabase(dbName string, singleThread bool) (*Database, error) { var err error // open database - sqlConn, err := sql.Open("sqlite3", dbName) + sqlConn, err := sql.Open("postgres", dbName) if err != nil { return nil, err } diff --git a/pkg/database/method.go b/pkg/database/method.go index cd71d74..6878816 100644 --- a/pkg/database/method.go +++ b/pkg/database/method.go @@ -194,23 +194,28 @@ func (database *Database) Walk(root string, pattern []string, tagIDs []int64, us folder, filename := filepath.Split(path) err = findFolderStmt.QueryRow(folder).Scan(&folderID) if err != nil { - result, err := insertFolderStmt.Exec(folder, filepath.Base(folder)) + result, err := insertFolderStmt.Query(folder, filepath.Base(folder)) if err != nil { return err } - folderID, err = result.LastInsertId() + for result.Next() { + err = result.Scan(&folderID) + if err != nil { + return err + } + } + } + result, err := insertFileStmt.Query(folderID, filename, filename, info.Size()) + if err != nil { + return err + } + var fileID int64 + for result.Next() { + err = result.Scan(&fileID) if err != nil { return err } } - result, err := insertFileStmt.Exec(folderID, filename, filename, info.Size()) - if err != nil { - return err - } - fileID, err := result.LastInsertId() - if err != nil { - return err - } for _, tag := range tags { _, err := putTagOnFileStmt.Exec(tag.ID, fileID, userID) diff --git a/pkg/database/method_tag.go b/pkg/database/method_tag.go index 3e6e630..aef484a 100644 --- a/pkg/database/method_tag.go +++ b/pkg/database/method_tag.go @@ -6,11 +6,17 @@ func (database *Database) InsertTag(tag *Tag) (int64, error) { database.singleThreadLock.Lock() defer database.singleThreadLock.Unlock() - result, err := database.stmt.insertTag.Exec(tag.Name, tag.Description, tag.CreatedByUserId) + result, err := database.stmt.insertTag.Query(tag.Name, tag.Description, tag.CreatedByUserId) if err != nil { return 0, err } - id, err := result.LastInsertId() + var id int64 + for result.Next() { + err = result.Scan(&id) + if err != nil { + return 0, err + } + } if err != nil { return 0, err } diff --git a/pkg/database/sql_stmt.go b/pkg/database/sql_stmt.go index e297eaf..fc25d16 100644 --- a/pkg/database/sql_stmt.go +++ b/pkg/database/sql_stmt.go @@ -2,25 +2,25 @@ package database import ( "database/sql" + "log" ) var initFilesTableQuery = `CREATE TABLE IF NOT EXISTS files ( - id INTEGER PRIMARY KEY, - folder_id INTEGER NOT NULL, + id SERIAL PRIMARY KEY, + folder_id INTEGER NOT NULL REFERENCES folders(id), realname TEXT NOT NULL, filename TEXT NOT NULL, - filesize INTEGER NOT NULL, - FOREIGN KEY(folder_id) REFERENCES folders(id) + filesize INTEGER NOT NULL );` var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders ( - id INTEGER PRIMARY KEY, + id SERIAL PRIMARY KEY, folder TEXT NOT NULL, foldername TEXT NOT NULL );` var initFeedbacksTableQuery = `CREATE TABLE IF NOT EXISTS feedbacks ( - id INTEGER PRIMARY KEY, + id SERIAL PRIMARY KEY, time INTEGER NOT NULL, content TEXT NOT NULL, user_id INTEGER NOT NULL, @@ -29,107 +29,98 @@ var initFeedbacksTableQuery = `CREATE TABLE IF NOT EXISTS feedbacks ( // User table schema definition // role: 0 - Anonymous User, 1 - Admin, 2 - User +// postgres avatar references problem var initUsersTableQuery = `CREATE TABLE IF NOT EXISTS users ( - id INTEGER PRIMARY KEY AUTOINCREMENT, + id SERIAL PRIMARY KEY, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL, role INTEGER NOT NULL, active BOOLEAN NOT NULL, - avatar_id INTEGER NOT NULL, - FOREIGN KEY(avatar_id) REFERENCES avatars(id) + avatar_id INTEGER NOT NULL DEFAULT 0 );` var initAvatarsTableQuery = `CREATE TABLE IF NOT EXISTS avatars ( - id INTEGER PRIMARY KEY, + id SERIAL PRIMARY KEY, avatarname TEXT NOT NULL, - avatar BLOB NOT NULL + avatar BYTEA NOT NULL );` var initTagsTableQuery = `CREATE TABLE IF NOT EXISTS tags ( - id INTEGER PRIMARY KEY AUTOINCREMENT, + id SERIAL PRIMARY KEY, name TEXT NOT NULL UNIQUE, description TEXT NOT NULL, - created_by_user_id INTEGER NOT NULL, - FOREIGN KEY(created_by_user_id) REFERENCES users(id) + created_by_user_id INTEGER NOT NULL REFERENCES users(id) );` var initFileHasTagTableQuery = `CREATE TABLE IF NOT EXISTS file_has_tag ( - file_id INTEGER NOT NULL, - tag_id INTEGER NOT NULL, - user_id INTEGER NOT NULL, - PRIMARY KEY (file_id, tag_id), - FOREIGN KEY(user_id) REFERENCES users(id) - FOREIGN KEY (file_id) REFERENCES files(id), - FOREIGN KEY (tag_id) REFERENCES tags(id) + file_id INTEGER NOT NULL REFERENCES files(id), + tag_id INTEGER NOT NULL REFERENCES tags(id), + user_id INTEGER NOT NULL REFERENCES users(id), + PRIMARY KEY (file_id, tag_id) );` var initLikesTableQuery = `CREATE TABLE IF NOT EXISTS likes ( - user_id INTEGER NOT NULL, - file_id INTEGER NOT NULL, - PRIMARY KEY (user_id, file_id), - FOREIGN KEY (user_id) REFERENCES users(id), - FOREIGN KEY (file_id) REFERENCES files(id) + user_id INTEGER NOT NULL REFERENCES users(id), + file_id INTEGER NOT NULL REFERENCES files(id), + PRIMARY KEY (user_id, file_id) );` var initReviewsTableQuery = `CREATE TABLE IF NOT EXISTS reviews ( - id INTEGER PRIMARY KEY, - user_id INTEGER NOT NULL, - file_id INTEGER NOT NULL, + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id), + file_id INTEGER NOT NULL REFERENCES files(id), created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL DEFAULT 0, - content TEXT NOT NULL, - FOREIGN KEY (user_id) REFERENCES users(id), - FOREIGN KEY (file_id) REFERENCES files(id) + content TEXT NOT NULL );` var initPlaybacksTableQuery = `CREATE TABLE IF NOT EXISTS playbacks ( - id INTEGER PRIMARY KEY, - user_id INTEGER NOT NULL, - file_id INTEGER NOT NULL, + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id), + file_id INTEGER NOT NULL REFERENCES files(id), time INTEGER NOT NULL, - mothod INTEGER NOT NULL, - FOREIGN KEY (user_id) REFERENCES users(id), - FOREIGN KEY (file_id) REFERENCES files(id) + mothod INTEGER NOT NULL );` var initLogsTableQuery = `CREATE TABLE IF NOT EXISTS logs ( - id INTEGER PRIMARY KEY, + id SERIAL PRIMARY KEY, time INTEGER NOT NULL, message TEXT NOT NULL, - user_id INTEGER NOT NULL, - FOREIGN KEY (user_id) REFERENCES users(id) + user_id INTEGER NOT NULL REFERENCES users(id) );` var initTmpfsTableQuery = `CREATE TABLE IF NOT EXISTS tmpfs ( - id INTEGER PRIMARY KEY, + id SERIAL PRIMARY KEY, path TEXT NOT NULL, size INTEGER NOT NULL, - file_id INTEGER NOT NULL, + file_id INTEGER NOT NULL REFERENCES files(id), ffmpeg_config TEXT NOT NULL, created_time INTEGER NOT NULL, - accessed_time INTEGER NOT NULL, - FOREIGN KEY (file_id) REFERENCES files(id) + accessed_time INTEGER NOT NULL );` var insertFolderQuery = `INSERT INTO folders (folder, foldername) -VALUES (?, ?);` +VALUES ($1, $2) +RETURNING id; +;` -var findFolderQuery = `SELECT id FROM folders WHERE folder = ? LIMIT 1;` +var findFolderQuery = `SELECT id FROM folders WHERE folder = $1 LIMIT 1;` -var findFileQuery = `SELECT id FROM files WHERE folder_id = ? AND realname = ? LIMIT 1;` +var findFileQuery = `SELECT id FROM files WHERE folder_id = $1 AND realname = $2 LIMIT 1;` var insertFileQuery = `INSERT INTO files (folder_id, realname, filename, filesize) -VALUES (?, ?, ?, ?);` +VALUES ($1, $2, $3, $4) +RETURNING id;` var searchFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders ON files.folder_id = folders.id -WHERE filename LIKE ? +WHERE filename LIKE $1 ORDER BY folders.foldername, files.filename -LIMIT ? OFFSET ?;` +LIMIT $2 OFFSET $3;` -var getFolderQuery = `SELECT folder FROM folders WHERE id = ? LIMIT 1;` +var getFolderQuery = `SELECT folder FROM folders WHERE id = $1 LIMIT 1;` var dropFilesQuery = `DROP TABLE files;` @@ -139,42 +130,42 @@ var getFileQuery = `SELECT files.id, files.folder_id, files.realname, files.filename, folders.foldername, files.filesize FROM files JOIN folders ON files.folder_id = folders.id -WHERE files.id = ? +WHERE files.id = $1 LIMIT 1;` var searchFoldersQuery = `SELECT id, folder, foldername FROM folders -WHERE foldername LIKE ? +WHERE foldername LIKE $1 ORDER BY foldername -LIMIT ? OFFSET ?;` +LIMIT $2 OFFSET $3;` var getFilesInFolderQuery = `SELECT files.id, files.filename, files.filesize, folders.foldername, folders.folder FROM files JOIN folders ON files.folder_id = folders.id -WHERE folder_id = ? +WHERE folder_id = $1 ORDER BY files.filename -LIMIT ? OFFSET ?;` +LIMIT $2 OFFSET $3;` var getRandomFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders ON files.folder_id = folders.id ORDER BY RANDOM() -LIMIT ?;` +LIMIT $1;` var getRandomFilesWithTagQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM file_has_tag JOIN files ON file_has_tag.file_id = files.id JOIN folders ON files.folder_id = folders.id -WHERE file_has_tag.tag_id = ? +WHERE file_has_tag.tag_id = $1 ORDER BY RANDOM() -LIMIT ?;` +LIMIT $2;` var insertFeedbackQuery = `INSERT INTO feedbacks (time, content, user_id, header) -VALUES (?, ?, ?, ?);` +VALUES ($1, $2, $3, $4);` var getFeedbacksQuery = `SELECT feedbacks.id, feedbacks.time, feedbacks.content, feedbacks.header, @@ -184,39 +175,39 @@ JOIN users ON feedbacks.user_id = users.id ORDER BY feedbacks.time ;` -var deleteFeedbackQuery = `DELETE FROM feedbacks WHERE id = ?;` +var deleteFeedbackQuery = `DELETE FROM feedbacks WHERE id = $1;` var insertUserQuery = `INSERT INTO users (username, password, role, active, avatar_id) -VALUES (?, ?, ?, ?, ?);` +VALUES ($1, $2, $3, $4, $5);` var countUserQuery = `SELECT count(*) FROM users;` var countAdminQuery = `SELECT count(*) FROM users WHERE role= 1;` -var getUserQuery = `SELECT id, username, password, role, active, avatar_id FROM users WHERE username = ? LIMIT 1;` +var getUserQuery = `SELECT id, username, password, role, active, avatar_id FROM users WHERE username = $1 LIMIT 1;` var getUsersQuery = `SELECT id, username, role, active, avatar_id FROM users;` -var getUserByIdQuery = `SELECT id, username, role, active, avatar_id FROM users WHERE id = ? LIMIT 1;` +var getUserByIdQuery = `SELECT id, username, role, active, avatar_id FROM users WHERE id = $1 LIMIT 1;` -var updateUserActiveQuery = `UPDATE users SET active = ? WHERE id = ?;` +var updateUserActiveQuery = `UPDATE users SET active = $1 WHERE id = $2;` -var updateUsernameQuery = `UPDATE users SET username = ? WHERE id = ?;` +var updateUsernameQuery = `UPDATE users SET username = $1 WHERE id = $2;` -var updateUserPasswordQuery = `UPDATE users SET password = ? WHERE id = ?;` +var updateUserPasswordQuery = `UPDATE users SET password = $1 WHERE id = $2;` var getAnonymousUserQuery = `SELECT id, username, role, avatar_id FROM users WHERE role = 0 LIMIT 1;` -var insertTagQuery = `INSERT INTO tags (name, description, created_by_user_id) VALUES (?, ?, ?);` +var insertTagQuery = `INSERT INTO tags (name, description, created_by_user_id) VALUES ($1, $2, $3) RETURNING id;` -var deleteTagQuery = `DELETE FROM tags WHERE id = ?;` +var deleteTagQuery = `DELETE FROM tags WHERE id = $1;` var getTagQuery = `SELECT tags.id, tags.name, tags.description, users.id, users.username, users.role, users.avatar_id FROM tags JOIN users ON tags.created_by_user_id = users.id -WHERE tags.id = ? LIMIT 1;` +WHERE tags.id = $1 LIMIT 1;` var getTagsQuery = `SELECT tags.id, tags.name, tags.description, @@ -226,26 +217,27 @@ JOIN users ON tags.created_by_user_id = users.id ORDER BY tags.name ;` -var updateTagQuery = `UPDATE tags SET name = ?, description = ? WHERE id = ?;` +var updateTagQuery = `UPDATE tags SET name = $1, description = $2 WHERE id = $3;` -var putTagOnFileQuery = `INSERT OR IGNORE INTO file_has_tag (tag_id, file_id, user_id) VALUES (?, ?, ?);` +// postgres INSERT IGNORE +var putTagOnFileQuery = `INSERT INTO file_has_tag (tag_id, file_id, user_id) VALUES ($1, $2, $3) ON CONFLICT DO NOTHING;` var getTagsOnFileQuery = `SELECT tags.id, tags.name, tags.description, tags.created_by_user_id FROM file_has_tag JOIN tags ON file_has_tag.tag_id = tags.id -WHERE file_has_tag.file_id = ? +WHERE file_has_tag.file_id = $1 ORDER BY tags.name ;` -var deleteTagOnFileQuery = `DELETE FROM file_has_tag WHERE tag_id = ? AND file_id = ?;` +var deleteTagOnFileQuery = `DELETE FROM file_has_tag WHERE tag_id = $1 AND file_id = $2;` -var deleteTagReferenceInFileHasTagQuery = `DELETE FROM file_has_tag WHERE tag_id = ?;` +var deleteTagReferenceInFileHasTagQuery = `DELETE FROM file_has_tag WHERE tag_id = $1;` -var updateFoldernameQuery = `UPDATE folders SET foldername = ? WHERE id = ?;` +var updateFoldernameQuery = `UPDATE folders SET foldername = $1 WHERE id = $2;` var insertReviewQuery = `INSERT INTO reviews (user_id, file_id, created_at, content) -VALUES (?, ?, ?, ?);` +VALUES ($1, $2, $3, $4);` var getReviewsOnFileQuery = `SELECT reviews.id, reviews.created_at, reviews.updated_at, reviews.content, @@ -254,15 +246,15 @@ files.id, files.filename FROM reviews JOIN users ON reviews.user_id = users.id JOIN files ON reviews.file_id = files.id -WHERE reviews.file_id = ? +WHERE reviews.file_id = $1 ORDER BY reviews.created_at ;` -var getReviewQuery = `SELECT id, file_id, user_id, created_at, updated_at, content FROM reviews WHERE id = ? LIMIT 1;` +var getReviewQuery = `SELECT id, file_id, user_id, created_at, updated_at, content FROM reviews WHERE id = $1 LIMIT 1;` -var updateReviewQuery = `UPDATE reviews SET content = ?, updated_at = ? WHERE id = ?;` +var updateReviewQuery = `UPDATE reviews SET content = $1, updated_at = $2 WHERE id = $3;` -var deleteReviewQuery = `DELETE FROM reviews WHERE id = ?;` +var deleteReviewQuery = `DELETE FROM reviews WHERE id = $1;` var getReviewsByUserQuery = `SELECT reviews.id, reviews.created_at, reviews.updated_at, reviews.content, @@ -271,19 +263,19 @@ files.id, files.filename FROM reviews JOIN users ON reviews.user_id = users.id JOIN files ON reviews.file_id = files.id -WHERE reviews.user_id = ? +WHERE reviews.user_id = $1 ORDER BY reviews.created_at ;` -var deleteFileQuery = `DELETE FROM files WHERE id = ?;` +var deleteFileQuery = `DELETE FROM files WHERE id = $1;` -var deleteFileReferenceInFileHasTagQuery = `DELETE FROM file_has_tag WHERE file_id = ?;` +var deleteFileReferenceInFileHasTagQuery = `DELETE FROM file_has_tag WHERE file_id = $1;` -var deleteFileReferenceInReviewsQuery = `DELETE FROM reviews WHERE file_id = ?;` +var deleteFileReferenceInReviewsQuery = `DELETE FROM reviews WHERE file_id = $1;` -var updateFilenameQuery = `UPDATE files SET filename = ? WHERE id = ?;` +var updateFilenameQuery = `UPDATE files SET filename = $1 WHERE id = $2;` -var resetFilenameQuery = `UPDATE files SET filename = realname WHERE id = ?;` +var resetFilenameQuery = `UPDATE files SET filename = realname WHERE id = $1;` type Stmt struct { initFilesTable *sql.Stmt @@ -352,26 +344,22 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) { stmt := &Stmt{} - // init files table - stmt.initFilesTable, err = sqlConn.Prepare(initFilesTableQuery) - if err != nil { - return nil, err - } - // init folders table stmt.initFoldersTable, err = sqlConn.Prepare(initFoldersTableQuery) if err != nil { return nil, err } - - // init feedbacks tables - stmt.initFeedbacksTable, err = sqlConn.Prepare(initFeedbacksTableQuery) + _, err = stmt.initFoldersTable.Exec() if err != nil { return nil, err } - // init users table - stmt.initUsersTable, err = sqlConn.Prepare(initUsersTableQuery) + // init files table + stmt.initFilesTable, err = sqlConn.Prepare(initFilesTableQuery) + if err != nil { + return nil, err + } + _, err = stmt.initFilesTable.Exec() if err != nil { return nil, err } @@ -381,99 +369,103 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) { if err != nil { return nil, err } + _, err = stmt.initAvatarsTable.Exec() + if err != nil { + return nil, err + } + + // init users table + stmt.initUsersTable, err = sqlConn.Prepare(initUsersTableQuery) + if err != nil { + return nil, err + } + _, err = stmt.initUsersTable.Exec() + if err != nil { + return nil, err + } + + // init feedbacks tables + stmt.initFeedbacksTable, err = sqlConn.Prepare(initFeedbacksTableQuery) + if err != nil { + return nil, err + } + _, err = stmt.initFeedbacksTable.Exec() + if err != nil { + return nil, err + } // init tags table stmt.initTagsTable, err = sqlConn.Prepare(initTagsTableQuery) if err != nil { return nil, err } + _, err = stmt.initTagsTable.Exec() + if err != nil { + return nil, err + } // init file_has_tag table stmt.initFileHasTag, err = sqlConn.Prepare(initFileHasTagTableQuery) if err != nil { return nil, err } + _, err = stmt.initFileHasTag.Exec() + if err != nil { + return nil, err + } // init likes table stmt.initLikesTable, err = sqlConn.Prepare(initLikesTableQuery) if err != nil { return nil, err } + _, err = stmt.initLikesTable.Exec() + if err != nil { + return nil, err + } // init reviews table stmt.initReviewsTable, err = sqlConn.Prepare(initReviewsTableQuery) if err != nil { return nil, err } + _, err = stmt.initReviewsTable.Exec() + if err != nil { + return nil, err + } // init playbacks table stmt.initPlaybacksTable, err = sqlConn.Prepare(initPlaybacksTableQuery) if err != nil { return nil, err } + _, err = stmt.initPlaybacksTable.Exec() + if err != nil { + return nil, err + } // init logs table stmt.initLogsTable, err = sqlConn.Prepare(initLogsTableQuery) if err != nil { return nil, err } + _, err = stmt.initLogsTable.Exec() + if err != nil { + return nil, err + } // init tmpfs table stmt.initTmpfsTable, err = sqlConn.Prepare(initTmpfsTableQuery) if err != nil { return nil, err } - - // run init statement - _, err = stmt.initFilesTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initFoldersTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initFeedbacksTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initUsersTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initAvatarsTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initTagsTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initFileHasTag.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initLikesTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initReviewsTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initPlaybacksTable.Exec() - if err != nil { - return nil, err - } - _, err = stmt.initLogsTable.Exec() - if err != nil { - return nil, err - } _, err = stmt.initTmpfsTable.Exec() if err != nil { return nil, err } + log.Println("Init tables finished") + // init insert folder statement stmt.insertFolder, err = sqlConn.Prepare(insertFolderQuery) if err != nil { @@ -772,5 +764,7 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) { return nil, err } + log.Println("Init statements finished") + return stmt, err }