Initial commit

This commit is contained in:
user
2026-07-12 13:47:34 +04:00
commit 51e2e789d0
37 changed files with 2005 additions and 0 deletions
+213
View File
@@ -0,0 +1,213 @@
package handlers
import (
"encoding/json"
"github.com/gorilla/mux"
"go_project/internal/configuration"
"go_project/internal/connection"
"go_project/internal/controllers"
"log"
"net/http"
"strconv"
)
func GetBookingById(response http.ResponseWriter, request *http.Request) {
log.Println("GetBookingById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
requestVars := mux.Vars(request)
bookingIdStringValue := requestVars["id"]
id, err := strconv.Atoi(bookingIdStringValue)
if err != nil {
log.Println("Current id string value of the booking record to get: \"" + bookingIdStringValue + "\"")
log.Println("Error parse id string value to int:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
booking, err := controllers.BookingById(sqlHandler, id)
if err != nil {
log.Println("Error getting booking by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
bookingMarshaled, err := json.Marshal(booking)
if err != nil {
log.Println("Error marshaling booking to json string format:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(bookingMarshaled)
if err != nil {
log.Println("Error writing booking to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func GetAllBookings(response http.ResponseWriter, request *http.Request) {
log.Println("GetAllBookings Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
limit, offset := configuration.GetRecordsLimit(), configuration.GetRecordsOffset()
listBookingParams := controllers.ListBookingParams{Limit: limit, Offset: offset}
allBookings, err := controllers.AllBookings(sqlHandler, listBookingParams)
if err != nil {
log.Println("Error getting all bookings from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
allBookingsMarshaled, err := json.Marshal(allBookings)
if err != nil {
log.Println("Error marshaling all bookings:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(allBookingsMarshaled)
if err != nil {
log.Println("Error writing all bookings to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func CreateBooking(response http.ResponseWriter, request *http.Request) {
log.Println("CreateBooking Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
var createBookingParams controllers.CreateBookingParams
err = json.NewDecoder(request.Body).Decode(&createBookingParams)
if err != nil {
log.Println("CreateBooking: Values of createBookingParams:", createBookingParams)
log.Println("Error unmarshaling booking from json string format:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
newBooking, err := controllers.CreateBooking(sqlHandler, createBookingParams)
if err != nil {
log.Println("Error creating booking:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
newBookingMarshaled, err := json.Marshal(newBooking)
if err != nil {
log.Println("Error marshaling booking to json string format:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(newBookingMarshaled)
if err != nil {
log.Println("Error writing booking to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func UpdateBooking(response http.ResponseWriter, request *http.Request) {
log.Println("UpdateBookingById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
var updateBookingParams controllers.UpdateBookingParams
err = json.NewDecoder(request.Body).Decode(&updateBookingParams)
if err != nil {
log.Println("UpdateBooking: Values of updateBookingParams:", updateBookingParams)
log.Println("Error unmarshaling booking from json string format:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
newBooking, err := controllers.UpdateBooking(sqlHandler, updateBookingParams)
if err != nil {
log.Println("Error updating booking by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
log.Println("SQL result: Updated booking record is:", newBooking)
response.WriteHeader(http.StatusOK)
}
func DeleteBookingById(response http.ResponseWriter, request *http.Request) {
log.Println("DeleteBookingById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != err {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
requestVars := mux.Vars(request)
bookingIdStringValue := requestVars["id"]
id, err := strconv.Atoi(bookingIdStringValue)
if err != nil {
log.Println("Current id string value of the booking record to delete: \"" + bookingIdStringValue + "\"")
log.Println("Error parse id string value to int:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
sqlResult, err := controllers.DeleteBookingById(sqlHandler, id)
if err != nil {
log.Println("Error deleting booking by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
rowsAffected, err := sqlResult.RowsAffected()
if err != nil {
log.Println("Error getting number of rows affected by an delete:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
log.Println("SQL result: Number of rows affected by an delete:", rowsAffected)
response.WriteHeader(http.StatusOK)
}
+213
View File
@@ -0,0 +1,213 @@
package handlers
import (
"encoding/json"
"github.com/gorilla/mux"
"go_project/internal/configuration"
"go_project/internal/connection"
"go_project/internal/controllers"
"log"
"net/http"
"strconv"
)
func GetAllTables(response http.ResponseWriter, request *http.Request) {
log.Println("GetAllTables Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
limit, offset := configuration.GetRecordsLimit(), configuration.GetRecordsOffset()
listTableParams := controllers.ListTableParams{Limit: limit, Offset: offset}
allTables, err := controllers.AllTables(sqlHandler, listTableParams)
if err != nil {
log.Println("Error getting all tables from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
allTablesMarshaled, err := json.Marshal(allTables)
if err != nil {
log.Println("Error marshaling all tables:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(allTablesMarshaled)
if err != nil {
log.Println("Error writing all tables to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func GetTableById(response http.ResponseWriter, request *http.Request) {
log.Println("GetTableById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
requestVars := mux.Vars(request)
tableIdStringValue := requestVars["id"]
id, err := strconv.Atoi(tableIdStringValue)
if err != nil {
log.Println("Current id string value of the table record to get: \"" + tableIdStringValue + "\"")
log.Println("Error parse id string value to int:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
table, err := controllers.TableById(sqlHandler, id)
if err != nil {
log.Println("Error getting table by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
tableMarshaled, err := json.Marshal(table)
if err != nil {
log.Println("Error marshaling table to json string format:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(tableMarshaled)
if err != nil {
log.Println("Error writing table to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func CreateTable(response http.ResponseWriter, request *http.Request) {
log.Println("CreateTable Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
var createTableParams controllers.CreateTableParams
err = json.NewDecoder(request.Body).Decode(&createTableParams)
if err != nil {
log.Println("CreateTable: Values of createTableParams:", createTableParams)
log.Println("Error unmarshaling table from json string format:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
newTable, err := controllers.CreateTable(sqlHandler, createTableParams)
if err != nil {
log.Println("Error creating table:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
newTableMarshaled, err := json.Marshal(newTable)
if err != nil {
log.Println("Error marshaling table to json string format:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.Header().Set("Content-Type", "application/json")
_, err = response.Write(newTableMarshaled)
if err != nil {
log.Println("Error writing table to response:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
response.WriteHeader(http.StatusOK)
}
func DeleteTableById(response http.ResponseWriter, request *http.Request) {
log.Println("DeleteTableById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
requestVars := mux.Vars(request)
tableIdStringValue := requestVars["id"]
id, err := strconv.Atoi(tableIdStringValue)
if err != nil {
log.Println("Current id string value of the table record to delete: \"" + tableIdStringValue + "\"")
log.Println("Error parse id string value to int:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
sqlResult, err := controllers.DeleteTableById(sqlHandler, id)
if err != nil {
log.Println("Error deleting table by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
rowsAffected, err := sqlResult.RowsAffected()
if err != nil {
log.Println("Error getting number of rows affected by an delete:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
log.Println("SQL result: Number of rows affected by an delete:", rowsAffected)
response.WriteHeader(http.StatusOK)
}
func UpdateTable(response http.ResponseWriter, request *http.Request) {
log.Println("UpdateTableById Serving:", request.URL.Path, "from", request.Host)
sqlHandler, err := connection.OpenDefault()
if err != nil {
log.Println("Error opening database connection:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
defer connection.MustClose(sqlHandler)
var updateTableParams controllers.UpdateTableParams
err = json.NewDecoder(request.Body).Decode(&updateTableParams)
if err != nil {
log.Println("UpdateTable: Values of updateTableParams:", updateTableParams)
log.Println("Error unmarshaling table from json string format:", err)
response.WriteHeader(http.StatusBadRequest)
return
}
newTable, err := controllers.UpdateTable(sqlHandler, updateTableParams)
if err != nil {
log.Println("Error updating table by id from database:", err)
response.WriteHeader(http.StatusInternalServerError)
return
}
log.Println("SQL result: Updated table record is:", newTable)
response.WriteHeader(http.StatusOK)
}