gowok

package module
v0.3.75 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2025 License: MIT Imports: 24 Imported by: 27

README

Gowok is a library that contains a lot of functions that help you to build Go project.

It has some utilities like:

  • config loader,
  • project bootstrapper,
  • HTTP response builder,
  • nil safety,
  • password hash, and so on.

Getting Started

Installation

Run this command inside your project.

go get github.com/gowok/gowok

Import in Project

In your main.go, write code like following example:

package main

import "github.com/gowok/gowok"

func main() {
	gowok.Get().Run()
}

Create Configuration

  1. Create a YAML file named config.yaml.
  2. Then write this.
app:
  web:
    enabled: true
    host: :8080

Running the Project

Run this command inside your project.

go run main.go

Or if config file not on root dir, use flag --config

go run main.go --config=folder/gowok.yaml

It will show output like this:

2025/01/13 10:43:09 INFO starting web

Your project now ready to use 🔥

Let's try to send a request using curl!

curl localhost:8080

It will show output like this:

404 page not found

It means that your project already run. It can receive actual request and give response to it.

How to Contribute

Feel free to raise an issue or lovely pull request 😊

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HttpAccepted

func HttpAccepted(rw http.ResponseWriter, body any)

func HttpBadRequest

func HttpBadRequest(rw http.ResponseWriter, body any)

func HttpConflict

func HttpConflict(rw http.ResponseWriter, body any)

func HttpCreated

func HttpCreated(rw http.ResponseWriter, body any)

func HttpForbidden

func HttpForbidden(rw http.ResponseWriter)

func HttpInternalServerError

func HttpInternalServerError(rw http.ResponseWriter, body any)

func HttpNoContent

func HttpNoContent(rw http.ResponseWriter)

func HttpNotFound

func HttpNotFound(rw http.ResponseWriter)

func HttpOk

func HttpOk(rw http.ResponseWriter, body any)

func HttpUnauthorized

func HttpUnauthorized(rw http.ResponseWriter)

Types

type Config

type Config struct {
	App      config.App
	Security config.Security
	SQLs     map[string]config.SQL  `yaml:"sql"`
	Http     map[string]config.Http `yaml:"http"`
	Smtp     map[string]config.Smtp `yaml:"smtp"`
	Others   map[string]string      `yaml:"others"`

	IsTesting bool `yaml:"is_testing"`
	// Environtment string `yaml:"environtment"`
	EnvFile string `yaml:"env_file"`
}

func NewConfig added in v0.3.72

func NewConfig(pathConfig string) (*Config, map[string]any, error)

type ConfigureFunc

type ConfigureFunc func(*Project)

type Hook added in v0.3.72

type Hook func()

type Hooks

type Hooks struct {
	// contains filtered or unexported fields
}

func (*Hooks) OnStarted added in v0.3.72

func (h *Hooks) OnStarted(hook Hook)

func (*Hooks) OnStarting added in v0.3.72

func (h *Hooks) OnStarting(hook Hook)

func (*Hooks) OnStopped added in v0.3.72

func (h *Hooks) OnStopped(hook Hook)

type Pagination

type Pagination[T any] struct {
	Page        int `query:"page" json:"page"`
	PerPage     int `query:"per_page" json:"per_page"`
	TotalRecord int `json:"total_record"`

	Filter map[string]any    `query:"filter" json:"filter"`
	Fields []string          `query:"fields" json:"fields"`
	Sort   map[string]string `query:"sort" json:"sort"`

	Data []T `json:"data"`
}

func PaginationFromReq

func PaginationFromReq[T any](r *http.Request) Pagination[T]

func (Pagination[T]) MarshalJSON

func (p Pagination[T]) MarshalJSON() ([]byte, error)

func (*Pagination[T]) SetData

func (p *Pagination[T]) SetData(data ...T)

func (Pagination[T]) Skip

func (p Pagination[T]) Skip() int

func (Pagination[T]) TotalPage

func (p Pagination[T]) TotalPage() float64

type Project

type Project struct {
	Config    *Config
	ConfigMap map[string]any
	Runner    *runner.Runner
	Hooks     *Hooks
	// contains filtered or unexported fields
}

func Get

func Get() *Project

func (*Project) Configures

func (p *Project) Configures(configures ...ConfigureFunc) *Project

func (*Project) Reload added in v0.3.72

func (p *Project) Reload()

func (*Project) Run

func (p *Project) Run(forever ...bool)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL