Skip to content

tuxounet/k2-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

216 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

k2-sdk

Install

go get -v  github.com/tuxounet/k2-sdk

Bootstrap a new App

Makefile

APP_NAME := Sample
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
VERSION := $(if $(CI_COMMIT_TAG),$(CI_COMMIT_TAG),v${GIT_BRANCH})
GO_PATH:=$(shell go env GOPATH)
VERSION_FILE := ./app/version.go
init:
	go mod tidy

write-version:
	echo "package app" > ${VERSION_FILE}
	echo "" >> ${VERSION_FILE}
	echo "const (" >> ${VERSION_FILE}
	echo "    AppName    = \"${APP_NAME}\"" >> ${VERSION_FILE}
	echo "    AppVersion = \"${VERSION}\"" >> ${VERSION_FILE}
	echo ")" >> ${VERSION_FILE}

prepare: init write-version
	go install github.com/swaggo/swag/cmd/swag@v1.16.4
	${GO_PATH}/bin/swag init --instanceName ${APP_NAME}
	${GO_PATH}/bin/swag fmt

run: prepare
	go run ./main.go

Entrypoint (main.go)

package main

import (
	"myApp/app"
	runtime "github.com/tuxounet/k2-sdk"
)

// @title			Sample
// @version		0.0
// @description	This is the API for Sample App
// @termsOfService	http://swagger.io/terms/
// @contact.name	API Support
// @contact.url	http://www.swagger.io/support
// @contact.email	support@swagger.io
// @license.name	GPL-3.0
// @license.url	http://www.gnu.org/licenses/gpl-3.0.html
func main() {
	runtime.HostSingleApp(app.NewApp())
}

Sample controller (controllers/hello/controller.go)

package hello

import (
	"github.com/tuxounet/k2-sdk/bases"
	"github.com/tuxounet/k2-sdk/types"
	"github.com/gin-gonic/gin"
)

type HelloController struct {
	bases.BaseController
}

func NewHelloController(app types.IApp) types.IController {
	base := bases.NewBaseController(app, "hello")
	return &HelloController{
		base,
	}
}

func (h *HelloController) Register(r *gin.RouterGroup) error {

	r.GET("/sayHello", h.api_hello())
	return nil
}

// api_hello godoc
// @Summary  Hello, world!
// @Schemes
// @Tags hello
// @Produce json
// @Success 200  {string} string "OK"
// @Router /sayHello [get]
func (h *HelloController) api_hello() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		h.GetLogger().Info("Something said hello!")
		ctx.JSON(200, gin.H{
			"message": "Hello, world!",
		})
	}
}

App Definition

package app

import (
	"myApp/controllers/hello"
	"myApp/docs"
	"myApp/ui"
	"github.com/tuxounet/k2-sdk/bases"
	"github.com/tuxounet/k2-sdk/types"
)

func NewApp() types.IApp {
	return bases.NewBaseApp(
		AppName,
		AppVersion,
		docs.SwaggerInfoHello,
		&ui.Dist,
		[]types.ControllerCtor{
			hello.NewHelloController,
		},
	)
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published