dotsql

A Golang library for using SQL.

  • 所有者: qustavo/dotsql
  • 平台:
  • 許可證: GNU General Public License v2.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

dotsql
GoDoc
Build Status
Test coverage
Go Report Card

A Golang library for using SQL.

It is not an ORM, it is not a query builder. Dotsql is a library that helps you
keep sql files in one place and use it with ease.

Dotsql is heavily inspired by yesql.

Installation

$ go get github.com/gchaincl/dotsql

Usage

First of all, you need to define queries inside your sql file:

-- name: create-users-table
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    name VARCHAR(255),
    email VARCHAR(255)
);

-- name: create-user
INSERT INTO users (name, email) VALUES(?, ?)

-- name: find-users-by-email
SELECT id,name,email FROM users WHERE email = ?

-- name: find-one-user-by-email
SELECT id,name,email FROM users WHERE email = ? LIMIT 1

--name: drop-users-table
DROP TABLE users

Notice that every query has a name tag (--name:<some name>),
this is needed to be able to uniquely identify each query
inside dotsql.

With your sql file prepared, you can load it up and start utilizing your queries:

// Get a database handle
db, err := sql.Open("sqlite3", ":memory:")

// Loads queries from file
dot, err := dotsql.LoadFromFile("queries.sql")

// Run queries
res, err := dot.Exec(db, "create-users-table")
res, err := dot.Exec(db, "create-user", "User Name", "main@example.com")
rows, err := dot.Query(db, "find-users-by-email", "main@example.com")
row, err := dot.QueryRow(db, "find-one-user-by-email", "user@example.com")

stmt, err := dot.Prepare(db, "drop-users-table")
result, err := stmt.Exec()

You can also merge multiple dotsql instances created from different sql file inputs:

dot1, err := dotsql.LoadFromFile("queries1.sql")
dot2, err := dotsql.LoadFromFile("queries2.sql")
dot := dotsql.Merge(dot1, dot2)

Embeding

To avoid distributing sql files alongside the binary file, you will need to use tools like
gotic to embed / pack everything into one file.

TODO

  • Enable text interpolation inside queries using text/template
  • sqlx integration

主要指標

概覽
名稱與所有者qustavo/dotsql
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證GNU General Public License v2.0
所有者活动
創建於2014-11-20 12:14:39
推送於2023-11-24 08:19:45
最后一次提交2023-11-23 14:15:59
發布數4
最新版本名稱v1.2.0 (發布於 )
第一版名稱v0.1.0 (發布於 )
用户参与
星數744
關注者數25
派生數53
提交數63
已啟用問題?
問題數13
打開的問題數6
拉請求數10
打開的拉請求數2
關閉的拉請求數3
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?