This commit is contained in:
2021-01-07 21:45:59 -05:00
parent 67e7bf9f5a
commit 04924ead5c
28 changed files with 676 additions and 288 deletions

View File

@@ -1,40 +1,125 @@
package db
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"log"
"path"
"fmt"
"time"
"gorm.io/gorm"
"gorm.io/driver/sqlite"
"reichard.io/imagini/internal/config"
)
func OpenDB(data) *gorm.DB {
database, _ := gorm.Open(sqlite.Open("./db/imagini.db"), &gorm.Config{
PrepareStmt: true,
})
var db *gorm.DB
func ConnectDB(c *config.Config) {
fmt.Printf("%+v\n", c)
if c.DBType == "SQLite" {
dbLocation := path.Join(c.ConfigPath, "imagini.db")
db, _ = gorm.Open(sqlite.Open(dbLocation), &gorm.Config{
PrepareStmt: true,
})
} else {
log.Fatal("ERROR: Unsupported Database")
}
// Initialize Database
database.AutoMigrate(&ServerSetting{})
database.AutoMigrate(&User{})
database.AutoMigrate(&MediaItem{})
database.AutoMigrate(&Tag{})
database.AutoMigrate(&Album{})
return database
db.AutoMigrate(&ServerSetting{})
db.AutoMigrate(&User{})
db.AutoMigrate(&MediaItem{})
db.AutoMigrate(&Tag{})
db.AutoMigrate(&Album{})
}
func ItemsFromAlbum(userID int, albumID int) []MediaItem {
database, _ := gorm.Open(sqlite.Open("./db/imagini.db"), &gorm.Config{})
database.Raw(`
SELECT
MediaItems.*
FROM
MediaAlbums
INNER JOIN MediaItems ON MediaAlbums.mediaID = MediaItems.mediaID
WHERE MediaAlbums.albumID = ? AND MediaItems.userID = ?`, albumID, userID)
return nil
func ItemsFromAlbum(user User, album Album) []MediaItem {
var mediaItems []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).
db.
//Where("album = ? AND user = ?", albumID, userID).
Find(&mediaItems)
return mediaItems
// db.Raw(`
// SELECT
// MediaItems.*
// FROM
// MediaAlbums
// INNER JOIN MediaItems ON MediaAlbums.mediaID = MediaItems.mediaID
// WHERE MediaAlbums.albumID = ? AND MediaItems.userID = ?`, albumID, userID)
}
func ItemsFromTags(userID int, tagID int) []MediaItem {
return nil
}
// func ItemsFromTags(userID int, tagID int) []MediaItem {
// return nil
// }
//
// func IndexMediaItems(newItems []MediaItem) {
// }
func IndexMediaItems(newItems []MediaItem) {
func PopulateTestData() {
user1 := User{Name: "Evan", Email: "evan@reichard.io", AuthType: "LDAP", Salt: "1234", HashedPWSalt: "1234"}
user2 := User{Name: "Ryan", Email: "ryan@example.com", AuthType: "Local", Salt: "2345", HashedPWSalt: "2345"}
user3 := User{Name: "Bill", Email: "bill@example.com", AuthType: "LDAP", Salt: "3456", HashedPWSalt: "3456"}
mi1 := MediaItem{
User: user1,
EXIFDate: time.Now(),
Latitude: "1234",
Longitude: "1234",
RelPath: "./1234.jpg",
Tags: []Tag{
{Name: "Tag1"},
{Name: "Tag2"},
},
Albums: []Album{
{Name: "Album1"},
{Name: "Album2"},
},
}
mi2 := MediaItem{
User: user2,
EXIFDate: time.Now(),
Latitude: "1234",
Longitude: "1234",
RelPath: "./1234.jpg",
Tags: []Tag{
{Name: "Tag3"},
{Name: "Tag4"},
},
Albums: []Album{
{Name: "Album3"},
{Name: "Album4"},
},
}
mi3 := MediaItem{
User: user3,
EXIFDate: time.Now(),
Latitude: "1234",
Longitude: "1234",
RelPath: "./1234.jpg",
Tags: []Tag{
{Name: "Tag4"},
{Name: "Tag5"},
},
Albums: []Album{
{Name: "Album1"},
{Name: "Album7"},
},
}
// db.Create(&user1)
// db.Create(&user2)
// db.Create(&user3)
db.Create(&mi1)
db.Create(&mi2)
db.Create(&mi3)
}

View File

@@ -19,12 +19,11 @@ type User struct {
AuthType string
Salt string
HashedPWSalt string
MediaItems []MediaItem
}
type MediaItem struct {
gorm.Model
User User
User User `gorm:"ForeignKey:ID"`
EXIFDate time.Time
Latitude string
Longitude string