GO#2 posgreでデータベース作成

#めんどいのでログメインで書きます
今回はGoじゃなくてPostgreの記事です。
###今回のやること
1.Goのフォルダの中にSQL文(`setup.sql`)を書いておく
2.postgreでユーザー登録＆＆データベース登録する
3.指定したデータベースに`setup.sql`を反映させてテーブル作成

```terminal
$ createdb Chitchat
createdb: could not connect to database template1: FATAL:  password authentication failed for user "ユーザー名"
↑エラーが起きたのでsatckover教えて〜

 $rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

...
....
.....
Success. You can now start the database server using:
いけたっぽい。
```

bash_profile にパスを書かんといかんらしい
`export PGDATA=/usr/local/var/postgres`
で

```terminal
$ source ~/.bash_profile
$ createuser -P ユーザー名　　　　　　　　　　　//ユーザー作成
Enter password for new role:    //パスワードを新しく作成
Enter it again: 
Password:

$ createdb Chitchat      //データベース作成
$ psql Chitchat　　　　　　　　　　　　　　　　　//作成したデータベースをみて見よう

psql (11.1)
Type "help" for help.

Chitchat=# \l
                              List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |   Access privileges   
-----------+-------------+----------+---------+-------+-----------------------
 Chitchat  | ユーザー名    | UTF8     | C       | C     | 
 mydb      | postgres    | UTF8     | C       | C     | 
 postgres  | postgres    | UTF8     | C       | C     | 
 template0 | postgres    | UTF8     | C       | C     | =c/postgres          +
           |             |          |         |       | postgres=CTc/postgres
 template1 | postgres    | UTF8     | C       | C     | =c/postgres          +
           |             |          |         |       | postgres=CTc/postgres
(5 rows)

Chitchat=# exit
```

次にgoのファイル内に作成するテーブルを書いてく、railsでいうseed的な感じだった

```sql:setup.sql

create table users (
  id          serial primary key,
  uuid        varchar(64) not null unique,
  name        varchar(225),
  email       varchar(225) not null unique,
  Password    varchar(225) not null,
  created_at  timestamp not null
);

create table sessions (
id            serial primary key,
uuid          varchar(64) not null unique,
email         varchar(225),
user_id       integer references users(id),
created_at    timestamp not null
);

create table threads (
id            serial primary key,
uuid          varchar(64) not null unique,
topic         text,
user_id       integer references users(id),
created_at    timestamp not null
);

create table posts (
id            serial primary key,
uuid          varchar(64) not null unique,
body          text,
user_id       integer references users(id),
thread_id     integer references threads(id),
created_at    timestamp not null
);

```
##で、書いたSQL文を発行するよん
ターミナルに戻って

```terminal
$ psql -f setup.sql -d Chitchat
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE               //行けたっぽい
$ psql Chitchat
Password for user katoatsushi: 
psql (11.1)
Type "help" for help.

Chitchat=# \l　　　　　　　　　　　　　　　//データベースを確認
                              List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |   Access privileges   
-----------+-------------+----------+---------+-------+-----------------------
 Chitchat  | katoatsushi | UTF8     | C       | C     | 
 mydb      | postgres    | UTF8     | C       | C     | 
 postgres  | postgres    | UTF8     | C       | C     | 
 template0 | postgres    | UTF8     | C       | C     | =c/postgres          +
           |             |          |         |       | postgres=CTc/postgres
 template1 | postgres    | UTF8     | C       | C     | =c/postgres          +
           |             |          |         |       | postgres=CTc/postgres
(5 rows)

Chitchat=# \d
                 List of relations
 Schema |      Name       |   Type   |    Owner    
--------+-----------------+----------+-------------
 public | posts           | table    | katoatsushi
 public | posts_id_seq    | sequence | katoatsushi
 public | sessions        | table    | katoatsushi
 public | sessions_id_seq | sequence | katoatsushi
 public | threads         | table    | katoatsushi
 public | threads_id_seq  | sequence | katoatsushi
 public | users           | table    | katoatsushi
 public | users_id_seq    | sequence | katoatsushi
(8 rows)

Chitchat=# 
```

これでposgreでテーブル作成できましたね。