You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
1.9 KiB
Go
101 lines
1.9 KiB
Go
package note
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/ajikamaludin/go-fiber-rest/app/models"
|
|
gormdb "github.com/ajikamaludin/go-fiber-rest/pkg/gorm.db"
|
|
"github.com/ajikamaludin/go-fiber-rest/pkg/jwtmanager"
|
|
redisclient "github.com/ajikamaludin/go-fiber-rest/pkg/redis.client"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func GetAllNotes(c *fiber.Ctx, notes *[]models.Note) error {
|
|
err := redisclient.Get("allnotes", ¬es)
|
|
if err != nil {
|
|
db, err := gormdb.GetInstance()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
userId := jwtmanager.GetUserId(c)
|
|
db.Where("user_id = ?", userId).Find(¬es)
|
|
|
|
redisclient.Set("allnotes", ¬es, 30*time.Second)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetNoteById(id string, note *models.Note) error {
|
|
key := "note+" + id
|
|
err := redisclient.Get(key, ¬e)
|
|
if err != nil {
|
|
db, err := gormdb.GetInstance()
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = db.First(¬e, id).Error
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
redisclient.Set(key, ¬e, 30*time.Second)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func CreateNote(c *fiber.Ctx, noteRequest *models.NoteReq) (*models.Note, error) {
|
|
db, err := gormdb.GetInstance()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
userId := jwtmanager.GetUserId(c)
|
|
|
|
note := &models.Note{
|
|
UserId: userId,
|
|
Title: noteRequest.Note,
|
|
Note: noteRequest.Title,
|
|
}
|
|
|
|
db.Create(¬e)
|
|
return note, nil
|
|
}
|
|
|
|
func UpdateNote(note *models.Note, noteRequest *models.NoteReq) (*models.NoteRes, error) {
|
|
db, err := gormdb.GetInstance()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
db.Model(¬e).Updates(&models.Note{
|
|
Title: noteRequest.Title,
|
|
Note: noteRequest.Note,
|
|
})
|
|
key := "note+" + strconv.Itoa(int(note.ID))
|
|
redisclient.Remove(key)
|
|
|
|
return &models.NoteRes{
|
|
UserId: note.UserId,
|
|
Title: note.Title,
|
|
Note: note.Note,
|
|
}, err
|
|
}
|
|
|
|
func DeleteNote(note *models.Note) error {
|
|
db, err := gormdb.GetInstance()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
db.Delete(¬e)
|
|
key := "note+" + strconv.Itoa(int(note.ID))
|
|
redisclient.Remove(key)
|
|
|
|
return nil
|
|
}
|