package api

import (
	"github.com/gorilla/mux"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

type api struct {
	db *gorm.DB
}

func initDB(dbPath string) (*gorm.DB, error) {
	db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
	if err != nil {
		return nil, err
	}

	db.AutoMigrate(&Member{})
	return db, err
}

func Init(dbPath string, r *mux.Router) error {
	db, err := initDB(dbPath)
	if err != nil {
		return err
	}

	a := api{db}
	r.HandleFunc("/member", a.ListMembers).Methods("GET")
	r.HandleFunc("/member", a.AddMember).Methods("POST")
	r.HandleFunc("/member/{num:[0-9]+}", a.GetMember).Methods("GET")
	r.HandleFunc("/member/{num:[0-9]+}", a.UpdateMember).Methods("PUT")
	r.HandleFunc("/member/{num:[0-9]+}", a.DeleteMember).Methods("DELETE")
	return nil
}