-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.go
92 lines (80 loc) · 1.99 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package db
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/lib/pq" //justify because postgreSQL not mysql
)
var user = os.Getenv("db_user_goblog") //"goblog"
var password = os.Getenv("db_pw_goblog") //"password"
var database = os.Getenv("db_name_goblog") //"goblog"
var hostname = os.Getenv("db_host_goblog") //"192.168.88.226"
func createConn() *sql.DB {
connStr := "postgres://" + user + ":" + password + "@" + hostname + "/" + database + "?sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}
// defer db.Close()
return db
}
// Setup the database - Check if there are any tables and create them if not
func Setup() int {
fmt.Println("Running db/Setup")
fmt.Println("Connecting to " + hostname + " on db " + database + ".")
db := createConn()
defer db.Close()
var tableCount int
err := db.QueryRow(`SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public'`).Scan(&tableCount)
if err != nil {
log.Fatal(err)
}
err = nil
if tableCount == 0 {
fmt.Println("Table count returned 0, creating tables.")
_, err := db.Query(`
DROP TABLE IF EXISTS posts;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS settings;
-- CREATE TYPE post_status AS ENUM ('published', 'draft');
CREATE TABLE posts
(
id SERIAL PRIMARY KEY,
author INT4,
posted TIMESTAMPTZ,
updated TIMESTAMPTZ,
title TEXT,
content TEXT,
status post_status default 'draft',
url TEXT,
excerpt TEXT,
meta XML
);
CREATE TABLE users
(
id SERIAL PRIMARY KEY,
username VARCHAR UNIQUE,
password VARCHAR,
firstname VARCHAR,
lastname VARCHAR,
created TIMESTAMPTZ,
updated TIMESTAMPTZ,
last_login TIMESTAMPTZ,
logins XML,
settings XML
);
CREATE TABLE settings
(
id SERIAL PRIMARY KEY,
setting VARCHAR,
value TEXT
)`)
if err != nil {
log.Fatal(err)
}
fmt.Println("Created database tables...")
}
fmt.Println("Tables exist, not creating anything.")
return tableCount
}