Golang เชื่อมกับ DB Postgres

Smalldog124
2 min readJul 31, 2019

--

ในที่เราจะใช้

สร้างฟังก์ชันที่ต่อกับ Database

  1. สร้างไฟล์ database.go ที่มีฟังก์ชันชื่อ Open ที่จะ connect กับ postgre และ retrun connection กลับไป
  2. สร้าง struct Config ที่มี field ต่างๆ
    User => user สำหรับที่จะ login Database
    Password => รหัสผ่านของการ login
    Host => ตำแหน่งที่รัน database เช่น localhost, IP ของเครื่องที่รัน Database
    Port => ตัว Database ของเรารันอยู่ที่ port อะไร
    Name => ชื่อของฐานข้อมูลที่เราจะต่อด้วย
    DisbleTLS => เป็นตัวที่เราจะตั้งว่าให้มีการ connect ฐานข้อมูลนี้ผ่าน remote หรือไม่
  3. สร้างตัวแปร dataSoruce เพื่อเก็บ string ที่จะเชื่อมต่อกับ Database
  4. ใช่ Library sqlx ช่วยในการ connect ด้วย Method Connect โดย parameter ตัวแรกเป็น database driver และตัวที่สองเป็น dataSoruce

สร้างฟังก์ชันที่ทำงานกับ Database (CRUD)

  1. สร้างไฟล์ postgres.go ที่มีฟังก์ชันบันทึกสินค้าใหม่และดึงข้อมูลสินค้าตาม ID
  2. สร้าง struct PostgresDB ที่มี field DB เก็บ connection
  3. สร้าง Method CreateNewProduct
    บรรทัด 14 — 21 เป็นการเตรียมข้อมูลสินค้าที่จะเก็บลง Database
    บรรทัด 23 เป็นการสร้างคำสั่งของ SQL
    บรรทัด 24 เป็นการเตรียมสำหรับสร้าง transaction ใน Database
    บรรทัด 25 เป็นการรวมระหว่าง query และ ค่าที่เราจะบันทึก
    บรรทัด 26 จะทำการบันทึกข้อมูลลง Database และเช็คว่ามี error อะไรหรือเปล่าถ้ามีก็จะ retrun product ว่างๆ และ error ที่เกิดขึ้น

สร้าง main ของโปรแกรม

  1. สร้างไฟล์ main ของโปรแกรมในที่ใช้ Library Gin สำหรับจัดการ http
  2. เพิ่มตัวรับ flag จาก command line สำหรับ config ตัว service ในบรรทัดที่ 14 ถึง 23
  3. นำ config จาก flag มาใส่ใน struct config จากนั้นทำการ connect กับ Database ในบรรทัดที่ 39
  4. สร้าง API จาก Gin โดยมี endpoint ในบรรทัด 43 ถึง 48
    [POST] /api/v1/product
    [GET] /api/v1/:id

สร้าง Handler ของ API

มาใช้งาน service กัน

  1. รัน postgres
$ docker run --name postgresDB -e POSTGRES_PASSWORD=example -e POSTGRES_USER=smalldoc -d postgres:11.1-alpine

2. รัน service

$ go run cmd/sales-api/main.go 

3. สร้าง Table ใน database

$ docker exec -it postgresDB sh
$ psql -h localhost -p 5432 -U smalldoc
$ CREATE TABLE products (
id TEXT,
name TEXT,
price DECIMAL,
amount INT,
date_created TIMESTAMP,
date_updated TIMESTAMP,
PRIMARY KEY (id)
);

เสร็จเรียบร้อยเราสามารถใช้งาน API ที่เราสร้างไว้ได้เลย

ที่อยู่โปรเจค https://github.com/smalldog124/service_demo

--

--

No responses yet