# README
lazy-entity - SQL builder & mini-ORM library
builder - building SQL queries
mini-ORM - creating simple repositories which are based on SQL builder
SQL Builder
- SELECT - queryapi.Select()
- INSERT - queryapi.Insert()
- UPDATE - queryapi.Update()
- DELETE - queryapi.Delete()
Repositories
- IRepository - repository.NewBase()
- ICrudRepository - repository.NewCrud[<entity_type>, <id_type>]()
SQL Builder Examples
SELECT
Go
builder := queryapi.Select()
builder.
Fields("id", "full_name", "phone", "is_resident", "contact.id", "COUNT(id)").
From("users").
Alias("user").
Join("contacts", "contact", builder.And(builder.Equal("phone", "$contact.phone"))).
Where(
builder.And(
builder.Or(
builder.Equal("phone", "+77474858669"),
builder.ILike("full_name", "%ussayev%"),
),
builder.Like("full_name", "%Ussayev%"),
builder.Equal("id", ":id"),
),
builder.Or(
builder.Equal("is_resident", 1),
builder.Equal("is_resident", 0),
),
builder.Gte("id", 25),
).
OrderBy(order_types.Desc, "phone").
Having(builder.Count("id", 25, builder.Lte)).
GroupBy("id").
Offset(50).
Limit(10)
fmt.Println("query:")
fmt.Println(builder.Build())
SQL
SELECT
user.id,
user.full_name,
user.phone,
user.is_resident,
contact.id,
COUNT(user.id)
FROM users AS user
INNER JOIN contacts AS contact ON (user.phone = contact.phone)
WHERE
((user.phone = '+77474858669' OR user.full_name ILIKE '%ussayev%') AND user.full_name LIKE '%Ussayev%' AND user.id = :id) AND
(user.is_resident = 1 OR user.is_resident = 0) AND
user.id >= 25
ORDER BY user.phone DESC
GROUP BY user.id
HAVING COUNT(user.id) <= 25
OFFSET 50
LIMIT 10
INSERT
Go
query := queryapi.
Insert("users").
Fields("id", "full_name", "phone", "is_resident").
Variables(1, "Ussayev Yerik", "+77474858669", true).
Build()
fmt.Println("query:")
fmt.Println(query)
SQL
INSERT INTO users (id, full_name, phone, is_resident)
VALUES (1, 'Ussayev Yerik', '+77474858669', true)
UPDATE
Go
builder := queryapi.Update("users")
builder.
Set("phone", "+7788001103").
Set("is_resident", "false").
Where(builder.Equal("id", 5))
fmt.Println("query:")
fmt.Println(builder.Build())
SQL
UPDATE users
SET
phone = '+7788001103',
is_resident = 'false'
WHERE
id = 5
DELETE
Go
builder := queryapi.Delete("users")
builder.
Where(builder.Or(
builder.Equal("id", 5),
builder.Gt("id", 10),
))
fmt.Println("query:")
fmt.Println(builder.Build())
SQL
DELETE FROM users
WHERE
(id = 5 OR id > 10)
mini-ORM examples
Create Crud-Repository
contactRepo := repository.NewCrud[Entity, int](
connection, // *sqlx.Conn
"contacts", // table name
repo_config.Crud{ // config for ICrudRepository
Alias: "contact",
},
)
list, err := contactRepo.GetAll()
if err != nil {
log.Fatal(err)
}
for _, item := range list {
fmt.Println(list)
}
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author