freedom

package module
v1.8.9 Latest Latest
Warning

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

Go to latest
Published: Feb 27, 2021 License: Apache-2.0 Imports: 11 Imported by: 8

README

Freedom DDD Framework

License Go Report Card Build Status GoDoc GitHub release

Freedom是一个基于六边形架构的框架,可以支撑充血的领域模型范式。

Overview

  • 集成 Iris
  • HTTP/H2C Server & Client
  • 集成普罗米修斯
  • AOP Worker & 无侵入 Context
  • 可扩展组件 Infrastructure
  • 依赖注入 & 依赖倒置 & 开闭原则
  • DDD & 六边形架构
  • 领域事件 & 消息队列组件
  • CQS & 聚合根
  • CRUD & PO Generate
  • 一级缓存 & 二级缓存 & 防击穿

安装

$ go get github.com/8treenet/freedom/freedom

脚手架创建项目

$ freedom new-project [project-name]

脚手架生成增删查改和持久化对象

# freedom new-po -h 查看更多
$ cd [project-name]

# 数据库数据源方式
$ freedom new-po --dsn "root:123123@tcp(127.0.0.1:3306)/freedom?charset=utf8"

# JSON 数据源方式
$ freedom new-po --json ./domain/po/schema.json

Example

基础教程
http2监听和依赖倒置
事务组件&自定义组件&Kafka&领域事件组件
一个完整的电商demo,包含CQS、聚合、实体、领域事件、资源库、基础设施

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// EnvProfileDir is the name of the environment variable for the search
	// directory of the profile
	EnvProfileDir = "FREEDOM_PROJECT_CONFIG"

	// ProfileENV is the name of the profile directory in environment variable
	ProfileENV = EnvProfileDir
)

Functions

func Configure added in v0.0.3

func Configure(obj interface{}, file string, metaData ...interface{}) error

Configure .

func DefaultConfiguration added in v1.6.9

func DefaultConfiguration() iris.Configuration

DefaultConfiguration proxy a call to iris.DefaultConfiguration

func IsDir added in v1.8.8

func IsDir(dir string) bool

IsDir accepts a string with a directory path and tests the path. It returns true if the path exists and it is a directory, and false otherwise.

func IsFile added in v1.8.8

func IsFile(path string) bool

IsFile accepts a string with a file path and tests the path. It returns true if the path exists and it is a file, and false otherwise.

func JoinPath added in v1.8.8

func JoinPath(elems ...string) string

JoinPath returns a string that joins any number of path elements into a single path, separating them with slashes.

func Logger

func Logger() *golog.Logger

Logger .

func Prepare added in v1.6.2

func Prepare(f func(Initiator))

Prepare .

func ProfileDirFromEnv added in v1.8.8

func ProfileDirFromEnv() string

ProfileDirFromEnv reads from environment variable with EnvProfileDir

func Prometheus added in v1.5.5

func Prometheus() *internal.Prometheus

Prometheus .

func ReadProfile added in v1.8.8

func ReadProfile(file string, v interface{}) error

ReadProfile accepts a string with the name of a profile file, and search the file by detectProfilePath. It will fill v with the configuration by parsing the profile into toml format, and returns nil if the file has found. It returns error, if the file has not been found or any error encountered.

func ServiceLocator added in v1.8.8

func ServiceLocator() *internal.ServiceLocatorImpl

ServiceLocator .

func SetConfigurator added in v1.8.8

func SetConfigurator(c Configurator)

SetConfigurator assigns a Configurator to global configurator

func SetConfigurer added in v1.6.9

func SetConfigurer(c Configurer)

SetConfigurer assigns a Configurator to global configurator

Types

type Application

type Application interface {
	InstallDB(f func() (db interface{}))
	InstallRedis(f func() (client redis.Cmdable))
	InstallCustom(f func() interface{})
	InstallMiddleware(handler iris.Handler)
	InstallParty(relativePath string)
	NewRunner(addr string, configurators ...host.Configurator) iris.Runner
	NewH2CRunner(addr string, configurators ...host.Configurator) iris.Runner
	NewAutoTLSRunner(addr string, domain string, email string, configurators ...host.Configurator) iris.Runner
	NewTLSRunner(addr string, certFile, keyFile string, configurators ...host.Configurator) iris.Runner
	Iris() *iris.Application
	Logger() *golog.Logger
	Run(serve iris.Runner, c iris.Configuration)
	BindBooting(f func(bootManager BootManager))
	InstallBusMiddleware(handle ...BusHandler)
	InstallSerializer(marshal func(v interface{}) ([]byte, error), unmarshal func(data []byte, v interface{}) error)
}

Application represents an application of freedom

func NewApplication added in v1.0.5

func NewApplication() Application

NewApplication .

type BeforeActivation added in v1.7.1

type BeforeActivation = IrisBeforeActivation

BeforeActivation is Is the start-up pre-processing of the action.

type BootManager added in v1.8.9

type BootManager = internal.BootManager

BootManager is the startup interface.

type Bus added in v1.6.2

type Bus = internal.Bus

Bus is the bus message type.

type BusHandler added in v1.6.2

type BusHandler = internal.BusHandler

BusHandler is the bus message middleware type.

type Configuration added in v1.6.9

type Configuration = IrisConfiguration

Configuration is the configuration type of the app.

type Configurator added in v1.8.8

type Configurator interface {
	Configure(obj interface{}, file string, metaData ...interface{}) error
}

Configurator .

type Configurer added in v1.6.9

type Configurer = Configurator

Configurer .

type Context added in v1.3.0

type Context = IrisContext

Context is the context type.

type DomainEvent added in v1.8.6

type DomainEvent = internal.DomainEvent

DomainEvent represents a domain event

type Entity added in v1.3.7

type Entity = internal.Entity

Entity is the entity's father interface.

type Infra added in v1.3.0

type Infra = internal.Infra

Infra .

type Initiator

type Initiator = internal.Initiator

Initiator .

type IrisBeforeActivation added in v1.8.8

type IrisBeforeActivation = mvc.BeforeActivation

IrisBeforeActivation represents an type alias to mvc.BeforeActivation

type IrisConfiguration added in v1.8.8

type IrisConfiguration = iris.Configuration

IrisConfiguration represents an type alias to iris.Configuration

type IrisContext added in v1.8.8

type IrisContext = iris.Context

IrisContext represents an type alias to iris.Context

type IrisResult added in v1.8.8

type IrisResult = hero.Result

IrisResult represents an type alias to hero.Result

type LogFields added in v1.7.16

type LogFields = golog.Fields

LogFields is the column type of the log.

type LogRow added in v1.7.16

type LogRow = golog.Log

LogRow is the log per line callback.

type Repository

type Repository = internal.Repository

Repository .

type Result added in v1.3.0

type Result = IrisResult

Result is the controller return type.

type SingleBoot added in v1.1.9

type SingleBoot = internal.BootManager

SingleBoot .

type UnitTest added in v1.4.0

type UnitTest = internal.UnitTest

UnitTest is a unit test tool.

func NewUnitTest added in v1.4.0

func NewUnitTest() UnitTest

NewUnitTest .

type Worker added in v1.7.1

type Worker = internal.Worker

Worker .

func ToWorker added in v1.7.1

func ToWorker(ctx Context) Worker

ToWorker proxy a call to WorkerFromCtx.

func WorkerFromCtx added in v1.8.8

func WorkerFromCtx(ctx Context) Worker

WorkerFromCtx extracts Worker from a Context.

Directories

Path Synopsis
example
base/adapter/repository
Package repository code generated by 'freedom new-project base' Package repository code generated by 'freedom new-project base'
Package repository code generated by 'freedom new-project base' Package repository code generated by 'freedom new-project base'
base/domain
Package domain generated by 'freedom new-project base'
Package domain generated by 'freedom new-project base'
base/domain/po
Package po generated by 'freedom new-project base'
Package po generated by 'freedom new-project base'
base/domain/vo
Package vo generated by 'freedom new-project base'
Package vo generated by 'freedom new-project base'
base/infra
Package infra generated by 'freedom new-project base' Package infra generated by 'freedom new-project base'
Package infra generated by 'freedom new-project base' Package infra generated by 'freedom new-project base'
base/server command
Package main code generated by 'freedom new-project base'
Package main code generated by 'freedom new-project base'
fshop/domain/po
Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po'
Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po' Package po generated by 'freedom new-po'
fshop/infra
Package infra code generated by 'freedom new-project base' Package infra code generated by 'freedom new-project base'
Package infra code generated by 'freedom new-project base' Package infra code generated by 'freedom new-project base'
fshop/server command
Code generated by 'freedom new-project fshop'
Code generated by 'freedom new-project fshop'
http2/server command
infra-example/domain/po
Package po generated by 'freedom new-po' Package po generated by 'freedom new-po'
Package po generated by 'freedom new-po' Package po generated by 'freedom new-po'
infra-example/domain/vo
Package vo code generated by 'freedom new-project infra-example'
Package vo code generated by 'freedom new-project infra-example'
infra-example/infra
Package infra code generated by 'freedom new-project base' Package infra code generated by 'freedom new-project base'
Package infra code generated by 'freedom new-project base' Package infra code generated by 'freedom new-project base'
infra-example/server command
Code generated by 'freedom new-project infra-example'
Code generated by 'freedom new-project infra-example'
cmd
infra

Jump to

Keyboard shortcuts

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