Skip to content

Latest commit

 

History

56 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shogun


A simple and light SQL query builder

Installation


go get github.com/hector3211/shogun

Examples


INSERT
stmt := NewInsertBuilder().Insert("users").Columns("name").Values("maddog")

fmt.Println(stmt.Build())
// OUTPUT
// "INSERT INTO users (name) VALUES ('maddog');"


// InsertBuilder can also be constructed like this also
stmtTwo := Insert("users").Columns("name", "age").Values("maddog", 20)

fmt.Println(stmtTwo.Build())
// OUTPUT
// "INSERT INTO users (name,age) VALUES ('maddog',20);"


// Create an UPSERT
stmtThree := Insert("users").
    Columns("id", "name").
    Values(1, "Alice").
    OnConflict("id").
    DoUpdate("name", "NewAlice")

fmt.Println(stmtThree.Build())
// OUTPUT
// "INSERT INTO users (id,name) VALUES (1,'Alice') ON CONFLICT(id) DO UPDATE SET name = 'NewAlice';"
SELECT
stmt := NewSelectBuilder().Select("id,name").From("users")

fmt.Println(stmt.Build())
// OUTPUT
// "SELECT id,name FROM users;"

stmtTwo := NewSelectBuilder().
    Select("id", "name").
    From("users").
    Where(
        Equal("name", "john"),
        And(),
        GreaterThan("id", 10),
    )

fmt.Println(stmtTwo.Build())
// OUTPUT
// "SELECT id,name FROM users WHERE name = 'john' AND id > 10;"

// SelectBuilders can also be constructed like this also
stmtThree := Select("*").From("users").OrderBy("name").Asc().Limit(15)

fmt.Println(stmtThree.String())
// OUTPUT
// "SELECT * FROM users ORDER BY name ASC LIMIT 15;"
UPDATE
stmt := NewUpdateBuilder().
    Update("users").
    Set(Equal("name", "maddog")).
    Where(Equal("name", "john"))

fmt.Println(stmt.Build())
// OUTPUT
// "UPDATE users SET name = 'maddog' WHERE name = 'john';"


stmtTwo := Update("users").
    Set(Equal("name", "maddog")).
    Where(Equal("name", "john"), Or(), Equal("id", 1))

fmt.Println(stmtTwo.String())
// OUTPUT
// "UPDATE users SET name = 'maddog' WHERE name = 'john' OR id = 1;"
DELETE
stmt := Delete("users").Where(Equal("id", 1), And(), Equal("name", "john")).Build()

fmt.Println(stmt.Build())
// OUTPUT
// "DELETE users WHERE id = 1 AND name = 'john';"


stmtTwo := NewDeleteBuilder().Delete("users").Where(
    Equal("id", 1),
    Or(),
    Equal("name", "john"),
    And(),
    Equal("verifyEmail", false)).Build()

fmt.Println(stmtTwo.String())
// OUTPUT
// "DELETE users WHERE id = 1 OR name = 'john' AND verifyEmail = FALSE;"
JOIN
stmt := NewJoinBuilder().
    JSelect("orders", "orders_id","orders_date").
    JSelect("customers", "customers_name").
    JFrom("orders").
    Join(RIGHT, "customers").
    OnCondition("orders.customer_id", EQUAL, "customers.customers_id").
    And().
    OnCondition("orders.customer_id", NOTEQUAL, "customers.customers_id")

fmt.Println(stmt.Build())
// OUTPUT
// "SELECT orders.orders_id,orders.orders_date,customers.customers_name
// FROM orders
// RIGHT JOIN customers
// ON orders.customer_id = customers.customers_id AND orders.customer_id != customers.customers_id;"

stmtTwo := NewJoinBuilder().
    JSelect("employees", "id","name").
    JSelect("departments", "name").
    JFrom("employees").
    Join(INNER, "departments").
    OnCondition("employees.department_id", EQUAL, "departments.id").
    And().
    OnCondition("employees.name", EQUAL,"john")

fmt.Println(stmtTwo.Build())
// OUTPUT
// "SELECT employees.id,employees.name,departments.name
// FROM employees
// INNER JOIN departments
// ON employees.department_id = departments.id AND employees.name = 'john';"

About

A golang sql query builder

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages