package db import ( "database/sql" "errors" ) // GetAllGroups retrieves all groups from the database func GetAllGroups() ([]Group, error) { var groups []Group query := `SELECT "GroupID", "GroupName" FROM "Groups" ORDER BY "GroupID"` rows, err := DB.Query(query) if err != nil { return nil, err } defer rows.Close() for rows.Next() { var group Group err := rows.Scan(&group.GroupID, &group.GroupName) if err != nil { return nil, err } groups = append(groups, group) } return groups, nil } // GetGroupByID retrieves a single group by ID func GetGroupByID(groupID int) (*Group, error) { var group Group query := `SELECT "GroupID", "GroupName" FROM "Groups" WHERE "GroupID" = $1` err := DB.QueryRow(query, groupID).Scan(&group.GroupID, &group.GroupName) if err != nil { if err == sql.ErrNoRows { return nil, errors.New("group not found") } return nil, err } return &group, nil } // CreateGroup creates a new group in the database func CreateGroup(groupName string) (*Group, error) { var group Group query := `INSERT INTO "Groups" ("GroupName") VALUES ($1) RETURNING "GroupID", "GroupName"` err := DB.QueryRow(query, groupName).Scan(&group.GroupID, &group.GroupName) if err != nil { return nil, err } return &group, nil } // UpdateGroup updates an existing group func UpdateGroup(groupID int, groupName string) error { query := `UPDATE "Groups" SET "GroupName" = $1 WHERE "GroupID" = $2` result, err := DB.Exec(query, groupName, groupID) if err != nil { return err } rowsAffected, err := result.RowsAffected() if err != nil { return err } if rowsAffected == 0 { return errors.New("group not found") } return nil } // DeleteGroup deletes a group from the database func DeleteGroup(groupID int) error { query := `DELETE FROM "Groups" WHERE "GroupID" = $1` result, err := DB.Exec(query, groupID) if err != nil { return err } rowsAffected, err := result.RowsAffected() if err != nil { return err } if rowsAffected == 0 { return errors.New("group not found") } return nil }