CRUD Operations
To perform operations on your database first make sure database
is enabled in the config/gorm.go
Create
Here is an example of how you can create a database record
package handlers
import (
"fmt"
"github.com/gocondor/core"
"github.com/gocondor/[my-project]/models"
)
func Signup(c *core.Context) *core.Response {
db := c.GetGorm()
hashedPassword, _ := c.GetHashing().HashPassword("my-password")
user := models.User{
Name: "Jack",
Email: "mail@example.com",
Password: hashedPassword,
}
result := db.Create(&user) // pass pointer
// user.ID: the inserted record primary key
// result.Error: returned error if any
}
More information is available at gorm record creating docs
Read
Here is how you can read records from the database
func SomeHandler(c *core.Context) {
var user User
result := DB.First(&user, 1) // find user id 1
// result.RowsAffected: found records count
// result.Error: if there is any error
errors.Is(result.Error, gorm.ErrRecordNotFound) // if record not found, the error ErrRecordNotFound is returned
DB.Where("email = ?", "mail@mail.com").First(&user), // find the first user with email mail@mail.com
// Get the first record you find (ordered by primary key)
DB.First(&user) // SELECT * FROM users ORDER BY id LIMIT 1;
// Get one record, no specified order
DB.Take(&user) // SELECT * FROM users LIMIT 1;
// Get the last record ordered by primary key desc
DB.Last(&user) // SELECT * FROM users ORDER BY id DESC LIMIT 1;
// Get all records
var users []User
result := DB.Find(&users) // SELECT * FROM users;
}
More information is available at gorm records creating docs
For more advanced queries check GORM advanced queries docs
Update
Here is how you can update a record
func SomeHandler(c *core.Context) {
var user User
DB.First(&user)
user.Name = "Joe"
user.Age = 40
DB.Save(&user) // Note: save creates the record if missing
}
More information is available at gorm records updating docs
Deleting
Here is how you can delete records:
func SomeHandler(c *core.Context) {
DB.Delete(&models.User{}, 10) // DELETE FROM users WHERE id = 10;
DB.Delete(&models.users{}, []int{1,2,3}) // DELETE FROM users WHERE id IN (1,2,3)
}
More information is available at gorm records deleting docs
Raw SQL
The docs are available at gorm raw sql docs
Transactions
The docs are available at gorm transactions docs