db.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package db
  2. import (
  3. "gorm.io/driver/sqlite"
  4. "gorm.io/gorm"
  5. "notabug.org/alimiracle/my-website-api/models"
  6. )
  7. type Database struct {
  8. db *gorm.DB
  9. }
  10. func Init() Database {
  11. var database Database
  12. var err error
  13. database.db, err = gorm.Open(sqlite.Open("alimiracle.db"), &gorm.Config{})
  14. if err != nil {
  15. panic("failed to connect database")
  16. }
  17. // Migrate the schema
  18. database.db.AutoMigrate(&models.Project{})
  19. database.db.AutoMigrate(&models.Skill{})
  20. database.db.AutoMigrate(&models.Job{})
  21. database.db.AutoMigrate(&models.Contact{})
  22. database.db.AutoMigrate(&models.User{})
  23. return database
  24. }
  25. func (self Database) FindAll(model any) {
  26. self.db.Find(model)
  27. }
  28. func (self Database) Create(model any) error {
  29. result := self.db.Create(model)
  30. return result.Error
  31. }
  32. func (self Database) Update(model any, id string) error {
  33. result := self.db.First(model, id)
  34. if result.Error != nil {
  35. return result.Error
  36. }
  37. self.db.Save(model)
  38. return result.Error
  39. }
  40. func (self Database) Delete(model any, id string) error {
  41. result := self.db.First(model, id)
  42. if result.Error != nil {
  43. return result.Error
  44. }
  45. self.db.Delete(model)
  46. return result.Error
  47. }
  48. func (self Database) FindUser(name string, model any) error {
  49. result := self.db.Where("name = ?", name).First(model)
  50. return result.Error
  51. }
  52. func (self Database) AddAdmin() {
  53. var count_users []models.User
  54. user := models.User{Name: "admin", Pass: "admin", Is_admin: true}
  55. self.FindAll(&count_users)
  56. if len(count_users) == 0 {
  57. self.Create(&user)
  58. }
  59. }