package handlers import ( "ttime/internal/database" "github.com/gofiber/fiber/v2" ) // The actual interface that we will use type GlobalState interface { Register(c *fiber.Ctx) error // To register a new user UserDelete(c *fiber.Ctx) error // To delete a user Login(c *fiber.Ctx) error // To get the token LoginRenew(c *fiber.Ctx) error // To renew the token CreateProject(c *fiber.Ctx) error // To create a new project GetUserProjects(c *fiber.Ctx) error // To get all projects SubmitWeeklyReport(c *fiber.Ctx) error GetWeeklyReport(c *fiber.Ctx) error SignReport(c *fiber.Ctx) error // GetProject(c *fiber.Ctx) error // To get a specific project // UpdateProject(c *fiber.Ctx) error // To update a project // DeleteProject(c *fiber.Ctx) error // To delete a project // CreateTask(c *fiber.Ctx) error // To create a new task // GetTasks(c *fiber.Ctx) error // To get all tasks // GetTask(c *fiber.Ctx) error // To get a specific task // UpdateTask(c *fiber.Ctx) error // To update a task // DeleteTask(c *fiber.Ctx) error // To delete a task // CreateCollection(c *fiber.Ctx) error // To create a new collection // GetCollections(c *fiber.Ctx) error // To get all collections // GetCollection(c *fiber.Ctx) error // To get a specific collection // UpdateCollection(c *fiber.Ctx) error // To update a collection // DeleteCollection(c *fiber.Ctx) error // To delete a collection // SignCollection(c *fiber.Ctx) error // To sign a collection GetButtonCount(c *fiber.Ctx) error // For demonstration purposes IncrementButtonCount(c *fiber.Ctx) error // For demonstration purposes ListAllUsers(c *fiber.Ctx) error // To get a list of all users in the application database ListAllUsersProject(c *fiber.Ctx) error // To get a list of all users for a specific project ProjectRoleChange(c *fiber.Ctx) error // To change a users role in a project } // "Constructor" func NewGlobalState(db database.Database) GlobalState { return &GState{Db: db, ButtonCount: 0} } // The global state, which implements all the handlers type GState struct { Db database.Database ButtonCount int } func (gs *GState) GetButtonCount(c *fiber.Ctx) error { return c.Status(200).JSON(fiber.Map{"pressCount": gs.ButtonCount}) } func (gs *GState) IncrementButtonCount(c *fiber.Ctx) error { gs.ButtonCount++ return c.Status(200).JSON(fiber.Map{"pressCount": gs.ButtonCount}) }