adding rest-api

This commit is contained in:
2026-07-08 06:59:16 -05:00
parent 0ef9b90bcd
commit 60c2f20fea
20 changed files with 524 additions and 0 deletions

107
rest-api/models/event.go Normal file
View File

@@ -0,0 +1,107 @@
package models
import (
"time"
"example.com/rest-api/db"
)
type Event struct {
ID int64
Name string `binding:"required"`
Description string `binding:"required"`
Location string `binding:"required"`
DateTime time.Time `binding:"required"`
UserID int
}
var events []Event = []Event{}
func (e Event) Save() error {
query := `
INSERT INTO events(name, description, location, dateTime, user_id)
VALUES (?, ?, ?, ?, ?)`
stmt, err := db.DB.Prepare(query)
if err != nil {
return err
}
// defer stmt.Close()
result, err := stmt.Exec(e.Name, e.Description, e.Location, e.DateTime, e.UserID)
if err != nil {
return err
}
id, err := result.LastInsertId()
e.ID = id
return err
}
func GetAllEvents() ([]Event, error) {
query := "SELECT * FROM events"
rows, err := db.DB.Query(query)
if err != nil {
return nil, err
}
defer rows.Close()
var events []Event
for rows.Next() {
var event Event
err := rows.Scan(&event.ID, &event.Name, &event.Description, &event.Location, &event.DateTime, &event.UserID)
if err != nil {
return nil, err
}
events = append(events, event)
}
return events, nil
}
func GetEventByID(id int64) (*Event, error) {
query := "SELECT * FROM events WHERE id = ?"
row := db.DB.QueryRow(query, id)
var event Event
err := row.Scan(&event.ID, &event.Name, &event.Description, &event.Location, &event.DateTime, &event.UserID)
if err != nil {
return nil, err
}
return &event, nil
}
func (event Event) Update() error {
query := `
UPDATE events
SET name = ?, description = ?, location = ?, dateTime = ?
WHERE id = ?
`
stmt, err := db.DB.Prepare(query)
if err != nil {
return err
}
defer stmt.Close()
_, err = stmt.Exec(event.Name, event.Description, event.Location, event.DateTime, event.UserID)
return err
}
func (event Event) Delete() error {
query := "DELETE FROM events WHERE id = ?"
stmt, err := db.DB.Prepare(query)
if err != nil {
return err
}
defer stmt.Close()
_, err = stmt.Exec(event.ID)
return err
}

40
rest-api/models/user.go Normal file
View File

@@ -0,0 +1,40 @@
package models
import (
"example.com/rest-api/db"
"example.com/rest-api/utils"
)
type User struct {
ID int64
Email string `binding:"required"`
Password string `binding:"required"`
}
func (u User) Save() error {
query := "INSERT INTO users(email, password) VALUES (?, ?)"
stmt, err := db.DB.Prepare(query)
if err != nil {
return err
}
defer stmt.Close()
hashedPassword, err := utils.HashPassword(u.Password)
if err != nil {
return err
}
result, err := stmt.Exec(u.Email, hashedPassword)
if err != nil {
return err
}
userId, err := result.LastInsertId()
u.ID = userId
return err
}