Pre graphql
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"errors"
|
||||
|
||||
"gorm.io/gorm"
|
||||
// "gorm.io/gorm/logger"
|
||||
@@ -52,7 +54,7 @@ func NewMgr(c *config.Config) *DBManager {
|
||||
|
||||
func (dbm *DBManager) bootstrapDatabase() {
|
||||
log.Info("[query] Bootstrapping database.")
|
||||
_, err := dbm.CreateUser(models.User{
|
||||
err := dbm.CreateUser(&models.User{
|
||||
Username: "admin",
|
||||
Password: "admin",
|
||||
AuthType: "Local",
|
||||
@@ -62,3 +64,46 @@ func (dbm *DBManager) bootstrapDatabase() {
|
||||
log.Fatal("[query] Unable to bootstrap database.")
|
||||
}
|
||||
}
|
||||
|
||||
func (dbm *DBManager) QueryBuilder(dest interface{}, params []byte) (int64, error) {
|
||||
// TODO:
|
||||
// - Where Filters
|
||||
// - Sort Filters
|
||||
// - Paging Filters
|
||||
|
||||
objType := fmt.Sprintf("%T", dest)
|
||||
if objType == "*[]models.MediaItem" {
|
||||
// TODO: Validate MediaItem Type
|
||||
} else {
|
||||
// Return Error
|
||||
return 0, errors.New("Invalid type")
|
||||
}
|
||||
|
||||
var count int64
|
||||
err := dbm.db.Find(dest).Count(&count).Error;
|
||||
return count, err
|
||||
|
||||
// Paging:
|
||||
// - Regular Pagination:
|
||||
// - /api/v1/MediaItems?page[limit]=50&page=2
|
||||
// - Meta Count Only
|
||||
// - /api/v1/MediaItems?page[limit]=0
|
||||
|
||||
// Sorting:
|
||||
// - Ascending Sort:
|
||||
// - /api/v1/MediaItems?sort=created_at
|
||||
// - Descending Sort:
|
||||
// - /api/v1/MediaItems?sort=-created_at
|
||||
|
||||
// Filters:
|
||||
// - Greater Than / Less Than (created_at, updated_at, exif_date)
|
||||
// - /api/v1/MediaItems?filter[created_at]>=2020-01-01&filter[created_at]<=2021-01-01
|
||||
// - Long / Lat Range (latitude, longitude)
|
||||
// - /api/v1/MediaItems?filter[latitude]>=71.1827&filter[latitude]<=72.0000&filter[longitude]>=100.000&filter[longitude]<=101.0000
|
||||
// - Image / Video (media_type)
|
||||
// - /api/v1/MediaItems?filter[media_type]=Image
|
||||
// - Tags (tags)
|
||||
// - /api/v1/MediaItems?filter[tags]=id1,id2,id3
|
||||
// - Albums (albums)
|
||||
// - /api/v1/MediaItems?filter[albums]=id1
|
||||
}
|
||||
|
||||
@@ -7,24 +7,24 @@ import (
|
||||
"reichard.io/imagini/internal/models"
|
||||
)
|
||||
|
||||
func (dbm *DBManager) CreateDevice (device models.Device) (models.Device, error) {
|
||||
func (dbm *DBManager) CreateDevice (device *models.Device) error {
|
||||
log.Info("[db] Creating device: ", device.Name)
|
||||
device.RefreshKey = uuid.New().String()
|
||||
err := dbm.db.Create(&device).Error
|
||||
return device, err
|
||||
return err
|
||||
}
|
||||
|
||||
func (dbm *DBManager) Device (device models.Device) (models.Device, error) {
|
||||
func (dbm *DBManager) Device (device *models.Device) (models.Device, error) {
|
||||
var foundDevice models.Device
|
||||
var count int64
|
||||
err := dbm.db.Where(&device).First(&foundDevice).Count(&count).Error
|
||||
return foundDevice, err
|
||||
}
|
||||
|
||||
func (dbm *DBManager) DeleteDevice (user models.Device) error {
|
||||
func (dbm *DBManager) DeleteDevice (user *models.Device) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dbm *DBManager) UpdateRefreshToken (device models.Device, refreshToken string) error {
|
||||
func (dbm *DBManager) UpdateRefreshToken (device *models.Device, refreshToken string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -6,30 +6,16 @@ import (
|
||||
"reichard.io/imagini/internal/models"
|
||||
)
|
||||
|
||||
func (dbm *DBManager) CreateMediaItem (mediaItem models.MediaItem) (models.MediaItem, error) {
|
||||
func (dbm *DBManager) CreateMediaItem (mediaItem *models.MediaItem) error {
|
||||
log.Info("[db] Creating media item: ", mediaItem.FileName)
|
||||
err := dbm.db.Create(&mediaItem).Error
|
||||
return mediaItem, err
|
||||
return err
|
||||
}
|
||||
|
||||
func (dbm *DBManager) MediaItemsFromAlbum(user models.User, album models.Album) ([]models.MediaItem, error) {
|
||||
func (dbm *DBManager) MediaItems(mediaItemFilter *models.MediaItem) ([]models.MediaItem, int64, error) {
|
||||
var mediaItems []models.MediaItem
|
||||
// db.Table("media_albums").
|
||||
// Select("media_item.*").
|
||||
// Joins("INNER JOIN media_items ON media_albums.ID = media_items.Albums").
|
||||
// Where("media_albums.album_id = ? AND media_items.User = ?", albumID, userID).
|
||||
var count int64
|
||||
|
||||
|
||||
err := dbm.db.
|
||||
//Where("album = ? AND user = ?", albumID, userID).
|
||||
Find(&mediaItems).Error
|
||||
return mediaItems, err
|
||||
|
||||
// db.Raw(`
|
||||
// SELECT
|
||||
// MediaItems.*
|
||||
// FROM
|
||||
// MediaAlbums
|
||||
// INNER JOIN MediaItems ON MediaAlbums.mediaID = MediaItems.mediaID
|
||||
// WHERE MediaAlbums.albumID = ? AND MediaItems.userID = ?`, albumID, userID)
|
||||
err := dbm.db.Where(&mediaItemFilter).Find(&mediaItems).Count(&count).Error;
|
||||
return mediaItems, count, err
|
||||
}
|
||||
|
||||
@@ -7,19 +7,19 @@ import (
|
||||
"reichard.io/imagini/internal/models"
|
||||
)
|
||||
|
||||
func (dbm *DBManager) CreateUser(user models.User) (models.User, error) {
|
||||
func (dbm *DBManager) CreateUser(user *models.User) error {
|
||||
log.Info("[db] Creating user: ", user.Username)
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return user, err
|
||||
return err
|
||||
}
|
||||
user.Password = string(hashedPassword)
|
||||
err = dbm.db.Create(&user).Error
|
||||
return user, err
|
||||
return err
|
||||
}
|
||||
|
||||
func (dbm *DBManager) User (user models.User) (models.User, error) {
|
||||
func (dbm *DBManager) User (user *models.User) (models.User, error) {
|
||||
var foundUser models.User
|
||||
var count int64
|
||||
err := dbm.db.Where(&user).First(&foundUser).Count(&count).Error
|
||||
|
||||
Reference in New Issue
Block a user