Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a469d1fd4 | ||
|
|
dd5d7afdff | ||
|
|
a02a7e1646 | ||
|
|
b85caeadbd |
@@ -91,6 +91,12 @@ func (a *APIHandler) OpenDatabase(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := a.DbHandler.AddNewTable(&models.Group{}); err != nil {
|
||||
a.logger.Error("OpenDatabase", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
a.DbHandler.SetToken(database.Token)
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
|
||||
128
api/groupHandler.go
Normal file
128
api/groupHandler.go
Normal file
@@ -0,0 +1,128 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"gitea.tecamino.com/paadi/memberDB/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (a *APIHandler) NewGroup(c *gin.Context) {
|
||||
if !a.DBHandlerIsInitialized() {
|
||||
a.logger.Error("StartNewEvent", "database handler is not initialized")
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var group models.Group
|
||||
err := c.BindJSON(&group)
|
||||
if err != nil {
|
||||
a.logger.Error("NewGroup", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if err := a.DbHandler.NewGroup(&group); err != nil {
|
||||
a.logger.Error("NewGroup", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "New group added " + group.Name,
|
||||
})
|
||||
}
|
||||
|
||||
func (a *APIHandler) GetGroup(c *gin.Context) {
|
||||
if !a.DBHandlerIsInitialized() {
|
||||
a.logger.Error("GetGroup", "database handler is not initialized")
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var i int
|
||||
var err error
|
||||
|
||||
id := c.Query("id")
|
||||
if id != "" {
|
||||
i, err = strconv.Atoi(id)
|
||||
if err != nil {
|
||||
a.logger.Error("GetGroup", err)
|
||||
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
groups, err := a.DbHandler.GetGroup(uint(i))
|
||||
if err != nil {
|
||||
a.logger.Error("GetGroup", err)
|
||||
c.JSON(http.StatusBadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, groups)
|
||||
}
|
||||
|
||||
func (a *APIHandler) UpdateGroup(c *gin.Context) {
|
||||
if !a.DBHandlerIsInitialized() {
|
||||
a.logger.Error("UpdateGroup", "database handler is not initialized")
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var groups []models.Group
|
||||
err := c.BindJSON(&groups)
|
||||
if err != nil {
|
||||
a.logger.Error("UpdateGroup", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
for _, event := range groups {
|
||||
err = a.DbHandler.UpdateGroup(event.Id, event)
|
||||
if err != nil {
|
||||
a.logger.Error("UpdateGroup", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "group(s) updated",
|
||||
})
|
||||
}
|
||||
|
||||
func (a *APIHandler) DeleteGroup(c *gin.Context) {
|
||||
if !a.DBHandlerIsInitialized() {
|
||||
a.logger.Error("DeleteGroup", "database handler is not initialized")
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
var request struct {
|
||||
Ids []uint `json:"ids"`
|
||||
}
|
||||
err = c.BindJSON(&request)
|
||||
if err != nil {
|
||||
a.logger.Error("DeleteGroup", err)
|
||||
c.JSON(http.StatusBadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = a.DbHandler.DeleteGroup(request.Ids...)
|
||||
if err != nil {
|
||||
a.logger.Error("DeleteGroup", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "group deleted",
|
||||
})
|
||||
}
|
||||
@@ -37,9 +37,7 @@ func (a *APIHandler) AddNewMember(c *gin.Context) {
|
||||
if member.LastName == "" {
|
||||
text += "lastName "
|
||||
}
|
||||
if member.Birthday == "" {
|
||||
text += "birthday "
|
||||
}
|
||||
|
||||
if text != "" {
|
||||
a.logger.Error("AddNewMember", text+"can not be empty")
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
|
||||
49
handlers/group.go
Normal file
49
handlers/group.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"gitea.tecamino.com/paadi/memberDB/models"
|
||||
)
|
||||
|
||||
func (dh *DatabaseHandler) NewGroup(group *models.Group) error {
|
||||
if !dh.DatabaseOpened() {
|
||||
return errors.New("database not opened")
|
||||
}
|
||||
|
||||
if dh.database.Exists(&models.Group{}, "name", group.Name, false) {
|
||||
return errors.New("group with name: " + group.Name + " exists already")
|
||||
}
|
||||
return dh.database.AddNewColum(&group)
|
||||
}
|
||||
|
||||
func (dh *DatabaseHandler) GetGroup(id uint) (group []models.Group, err error) {
|
||||
if !dh.DatabaseOpened() {
|
||||
return group, errors.New("database not opened")
|
||||
}
|
||||
|
||||
err = dh.database.GetById(&group, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (dh *DatabaseHandler) UpdateGroup(id int, group models.Group) (err error) {
|
||||
if !dh.DatabaseOpened() {
|
||||
return errors.New("database not opened")
|
||||
}
|
||||
return dh.database.UpdateValuesById(&group, uint(group.Id))
|
||||
}
|
||||
|
||||
func (dh *DatabaseHandler) DeleteGroup(ids ...uint) error {
|
||||
if !dh.DatabaseOpened() {
|
||||
return errors.New("database not opened")
|
||||
}
|
||||
|
||||
if len(ids) == 0 {
|
||||
return errors.New("no ids given to be deleted")
|
||||
}
|
||||
|
||||
return dh.database.DeleteById(&models.Group{}, ids...)
|
||||
}
|
||||
@@ -91,6 +91,11 @@ func (dh *DatabaseHandler) AddNewMember(members ...models.Member) error {
|
||||
return err
|
||||
}
|
||||
|
||||
encComment, err := crypto.Encrypt(member.Comment, dh.token)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
member.FirstNameHash = dh.hashField(member.FirstName)
|
||||
member.FirstName = encFirstName
|
||||
member.LastNameHash = dh.hashField(member.LastName)
|
||||
@@ -105,6 +110,7 @@ func (dh *DatabaseHandler) AddNewMember(members ...models.Member) error {
|
||||
member.FirstVisit = encFirstVisit
|
||||
member.LastVisit = encLastVisit
|
||||
member.Group = encGroup
|
||||
member.Comment = encComment
|
||||
|
||||
err = dh.database.AddNewColum(&member)
|
||||
if err != nil {
|
||||
@@ -138,61 +144,90 @@ func (dh *DatabaseHandler) GetMember(id uint) (members []models.Member, err erro
|
||||
}
|
||||
|
||||
for i := range members {
|
||||
if members[i].FirstName != "" {
|
||||
members[i].FirstName, err = crypto.Decrypt(members[i].FirstName, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].LastName != "" {
|
||||
members[i].LastName, err = crypto.Decrypt(members[i].LastName, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Birthday != "" {
|
||||
members[i].Birthday, err = crypto.Decrypt(members[i].Birthday, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Address != "" {
|
||||
members[i].Address, err = crypto.Decrypt(members[i].Address, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Zip != "" {
|
||||
members[i].Zip, err = crypto.Decrypt(members[i].Zip, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Town != "" {
|
||||
members[i].Town, err = crypto.Decrypt(members[i].Town, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Phone != "" {
|
||||
members[i].Phone, err = crypto.Decrypt(members[i].Phone, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Email != "" {
|
||||
members[i].Email, err = crypto.Decrypt(members[i].Email, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].FirstVisit != "" {
|
||||
members[i].FirstVisit, err = crypto.Decrypt(members[i].FirstVisit, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].LastVisit != "" {
|
||||
members[i].LastVisit, err = crypto.Decrypt(members[i].LastVisit, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Group != "" {
|
||||
members[i].Group, err = crypto.Decrypt(members[i].Group, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if members[i].Comment != "" {
|
||||
members[i].Comment, err = crypto.Decrypt(members[i].Comment, dh.token)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -287,6 +322,13 @@ func (dh *DatabaseHandler) UpdateMember(id int, member models.Member) (err error
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if member.Comment != "" {
|
||||
member.Comment, err = crypto.Encrypt(member.Comment, dh.token)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return dh.database.UpdateValuesById(&member, uint(member.Id))
|
||||
}
|
||||
|
||||
|
||||
6
models/group.go
Normal file
6
models/group.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package models
|
||||
|
||||
type Group struct {
|
||||
Id int `gorm:"primaryKey" json:"id"`
|
||||
Name string `gorm:"column:name" json:"name"`
|
||||
}
|
||||
@@ -17,4 +17,5 @@ type Member struct {
|
||||
LastVisit string `gorm:"column:lastVisit" json:"lastVisit,omitempty"`
|
||||
Group string `gorm:"column:group" json:"group,omitempty"`
|
||||
ResponsiblePerson Person `gorm:"type:json" json:"responsiblePerson"`
|
||||
Comment string `gorm:"column:comment" json:"comment"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user