60 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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
 | |
| 	// 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})
 | |
| }
 | 
