mirror of
https://github.com/astaxie/beego.git
synced 2024-11-21 17:30:55 +00:00
Merge pull request #4257 from flycash/fix/adapter
Remove scripts directory & update readme
This commit is contained in:
commit
e44f16c672
@ -17,11 +17,14 @@ go get -u golang.org/x/tools/cmd/goimports
|
|||||||
go get -u github.com/gordonklaus/ineffassign
|
go get -u github.com/gordonklaus/ineffassign
|
||||||
```
|
```
|
||||||
|
|
||||||
And the go into project directory, run :
|
Put those lines into your pre-commit githook script:
|
||||||
```shell script
|
```shell script
|
||||||
cp ./githook/pre-commit ./.git/hooks/pre-commit
|
goimports -w -format-only ./
|
||||||
|
|
||||||
|
ineffassign .
|
||||||
|
|
||||||
|
staticcheck -show-ignored -checks "-ST1017,-U1000,-ST1005,-S1034,-S1012,-SA4006,-SA6005,-SA1019,-SA1024" ./
|
||||||
```
|
```
|
||||||
This will add git hooks into .git/hooks. Or you can add it manually.
|
|
||||||
|
|
||||||
## Prepare middleware
|
## Prepare middleware
|
||||||
|
|
||||||
@ -33,7 +36,7 @@ You can run:
|
|||||||
```shell script
|
```shell script
|
||||||
docker-compose -f scripts/test_docker_compose.yml up -d
|
docker-compose -f scripts/test_docker_compose.yml up -d
|
||||||
```
|
```
|
||||||
Unit tests read addressed from environment, here is an example:
|
Unit tests read addresses from environment, here is an example:
|
||||||
```shell script
|
```shell script
|
||||||
export ORM_DRIVER=mysql
|
export ORM_DRIVER=mysql
|
||||||
export ORM_SOURCE="beego:test@tcp(192.168.0.105:13306)/orm_test?charset=utf8"
|
export ORM_SOURCE="beego:test@tcp(192.168.0.105:13306)/orm_test?charset=utf8"
|
||||||
@ -86,5 +89,5 @@ documenting your bug report or improvement proposal. If it does, it
|
|||||||
never hurts to add a quick "+1" or "I have this problem too". This will
|
never hurts to add a quick "+1" or "I have this problem too". This will
|
||||||
help prioritize the most common problems and requests.
|
help prioritize the most common problems and requests.
|
||||||
|
|
||||||
Also if you don't know how to use it. please make sure you have read though
|
Also, if you don't know how to use it. please make sure you have read through
|
||||||
the docs in http://beego.me/docs
|
the docs in http://beego.me/docs
|
209
README.md
209
README.md
@ -8,6 +8,12 @@ It is inspired by Tornado, Sinatra and Flask. beego has some Go-specific feature
|
|||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
|
###### Please see [Documentation](http://beego.me/docs) for more.
|
||||||
|
|
||||||
|
###### [beego-example](https://github.com/beego-dev/beego-example)
|
||||||
|
|
||||||
|
### Web Application
|
||||||
|
|
||||||
#### Create `hello` directory, cd `hello` directory
|
#### Create `hello` directory, cd `hello` directory
|
||||||
|
|
||||||
mkdir hello
|
mkdir hello
|
||||||
@ -25,10 +31,10 @@ It is inspired by Tornado, Sinatra and Flask. beego has some Go-specific feature
|
|||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "github.com/astaxie/beego"
|
import "github.com/astaxie/beego/server/web"
|
||||||
|
|
||||||
func main(){
|
func main(){
|
||||||
beego.Run()
|
web.Run()
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
#### Build and run
|
#### Build and run
|
||||||
@ -40,9 +46,204 @@ func main(){
|
|||||||
|
|
||||||
Congratulations! You've just built your first **beego** app.
|
Congratulations! You've just built your first **beego** app.
|
||||||
|
|
||||||
###### Please see [Documentation](http://beego.me/docs) for more.
|
### Using ORM module
|
||||||
|
|
||||||
|
```go
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego/client/orm"
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// User -
|
||||||
|
type User struct {
|
||||||
|
ID int `orm:"column(id)"`
|
||||||
|
Name string `orm:"column(name)"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// need to register models in init
|
||||||
|
orm.RegisterModel(new(User))
|
||||||
|
|
||||||
|
// need to register db driver
|
||||||
|
orm.RegisterDriver("mysql", orm.DRMySQL)
|
||||||
|
|
||||||
|
// need to register default database
|
||||||
|
orm.RegisterDataBase("default", "mysql", "beego:test@tcp(192.168.0.105:13306)/orm_test?charset=utf8")
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// automatically build table
|
||||||
|
orm.RunSyncdb("default", false, true)
|
||||||
|
|
||||||
|
// create orm object, and it will use `default` database
|
||||||
|
o := orm.NewOrm()
|
||||||
|
|
||||||
|
// data
|
||||||
|
user := new(User)
|
||||||
|
user.Name = "mike"
|
||||||
|
|
||||||
|
// insert data
|
||||||
|
id, err := o.Insert(user)
|
||||||
|
if err != nil {
|
||||||
|
logs.Info(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using httplib as http client
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego/client/httplib"
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Get, more methods please read docs
|
||||||
|
req := httplib.Get("http://beego.me/")
|
||||||
|
str, err := req.String()
|
||||||
|
if err != nil {
|
||||||
|
logs.Error(err)
|
||||||
|
}
|
||||||
|
logs.Info(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using config module
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/core/config"
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ConfigFile = "./app.conf"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cfg, err := config.NewConfig("ini", ConfigFile)
|
||||||
|
if err != nil {
|
||||||
|
logs.Critical("An error occurred:", err)
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
res, _ := cfg.String(context.Background(), "name")
|
||||||
|
logs.Info("load config name is", res)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Using logs module
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
err := logs.SetLogger(logs.AdapterFile, `{"filename":"project.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}`)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
logs.Info("hello beego")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Using timed task
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
"github.com/astaxie/beego/task"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// create a task
|
||||||
|
tk1 := task.NewTask("tk1", "0/3 * * * * *", func(ctx context.Context) error { logs.Info("tk1"); return nil })
|
||||||
|
|
||||||
|
// check task
|
||||||
|
err := tk1.Run(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
logs.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// add task to global todolist
|
||||||
|
task.AddTask("tk1", tk1)
|
||||||
|
|
||||||
|
// start tasks
|
||||||
|
task.StartTask()
|
||||||
|
|
||||||
|
// wait 12 second
|
||||||
|
time.Sleep(12 * time.Second)
|
||||||
|
defer task.StopTask()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using cache module
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/client/cache"
|
||||||
|
|
||||||
|
// don't forget this
|
||||||
|
_ "github.com/astaxie/beego/client/cache/redis"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/core/logs"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// create cache
|
||||||
|
bm, err := cache.NewCache("redis", `{"key":"default", "conn":":6379", "password":"123456", "dbNum":"0"}`)
|
||||||
|
if err != nil {
|
||||||
|
logs.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// put
|
||||||
|
isPut := bm.Put(context.Background(), "astaxie", 1, time.Second*10)
|
||||||
|
logs.Info(isPut)
|
||||||
|
|
||||||
|
isPut = bm.Put(context.Background(), "hello", "world", time.Second*10)
|
||||||
|
logs.Info(isPut)
|
||||||
|
|
||||||
|
// get
|
||||||
|
result, _ := bm.Get(context.Background(),"astaxie")
|
||||||
|
logs.Info(string(result.([]byte)))
|
||||||
|
|
||||||
|
multiResult, _ := bm.GetMulti(context.Background(), []string{"astaxie", "hello"})
|
||||||
|
for i := range multiResult {
|
||||||
|
logs.Info(string(multiResult[i].([]byte)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// isExist
|
||||||
|
isExist, _ := bm.IsExist(context.Background(), "astaxie")
|
||||||
|
logs.Info(isExist)
|
||||||
|
|
||||||
|
// delete
|
||||||
|
isDelete := bm.Delete(context.Background(), "astaxie")
|
||||||
|
logs.Info(isDelete)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
###### [beego-example](https://github.com/beego-dev/beego-example)
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
@ -28,5 +28,5 @@ var (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// VERSION represent beego web framework version.
|
// VERSION represent beego web framework version.
|
||||||
VERSION = "1.12.2"
|
VERSION = "2.0.0-alpha"
|
||||||
)
|
)
|
||||||
|
@ -184,17 +184,14 @@ func (c *BaseConfiger) Strings(ctx context.Context, key string) ([]string, error
|
|||||||
return strings.Split(res, ";"), nil
|
return strings.Split(res, ";"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO remove this before release v2.0.0
|
|
||||||
func (c *BaseConfiger) Unmarshaler(ctx context.Context, prefix string, obj interface{}, opt ...DecodeOption) error {
|
func (c *BaseConfiger) Unmarshaler(ctx context.Context, prefix string, obj interface{}, opt ...DecodeOption) error {
|
||||||
return errors.New("unsupported operation")
|
return errors.New("unsupported operation")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO remove this before release v2.0.0
|
|
||||||
func (c *BaseConfiger) Sub(ctx context.Context, key string) (Configer, error) {
|
func (c *BaseConfiger) Sub(ctx context.Context, key string) (Configer, error) {
|
||||||
return nil, errors.New("unsupported operation")
|
return nil, errors.New("unsupported operation")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO remove this before release v2.0.0
|
|
||||||
func (c *BaseConfiger) OnChange(ctx context.Context, key string, fn func(value string)) {
|
func (c *BaseConfiger) OnChange(ctx context.Context, key string, fn func(value string)) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# using pkg/adapter. Usually you want to migrate to V2 smoothly, you could running this script
|
|
||||||
|
|
||||||
find ./ -name '*.go' -type f -exec sed -i '' -e 's/github.com\/astaxie\/beego/github.com\/astaxie\/beego\/pkg\/adapter/g' {} \;
|
|
||||||
find ./ -name '*.go' -type f -exec sed -i '' -e 's/"github.com\/astaxie\/beego\/pkg\/adapter"/beego "github.com\/astaxie\/beego\/pkg\/adapter"/g' {} \;
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
etcdctl put current.float 1.23
|
|
||||||
etcdctl put current.bool true
|
|
||||||
etcdctl put current.int 11
|
|
||||||
etcdctl put current.string hello
|
|
||||||
etcdctl put current.serialize.name test
|
|
||||||
etcdctl put sub.sub.key1 sub.sub.key
|
|
@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
docker-compose -f "$(pwd)/scripts/test_docker_compose.yaml" up -d
|
|
||||||
|
|
||||||
export ORM_DRIVER=mysql
|
|
||||||
export TZ=UTC
|
|
||||||
export ORM_SOURCE="beego:test@tcp(localhost:13306)/orm_test?charset=utf8"
|
|
||||||
|
|
||||||
go test "$(pwd)/..."
|
|
||||||
|
|
||||||
# clear all container
|
|
||||||
docker-compose -f "$(pwd)/scripts/test_docker_compose.yaml" down
|
|
||||||
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
|||||||
version: "3.8"
|
|
||||||
services:
|
|
||||||
redis:
|
|
||||||
container_name: "beego-redis"
|
|
||||||
image: redis
|
|
||||||
environment:
|
|
||||||
- ALLOW_EMPTY_PASSWORD=yes
|
|
||||||
ports:
|
|
||||||
- "6379:6379"
|
|
||||||
|
|
||||||
mysql:
|
|
||||||
container_name: "beego-mysql"
|
|
||||||
image: mysql:5.7.30
|
|
||||||
ports:
|
|
||||||
- "13306:3306"
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=1q2w3e
|
|
||||||
- MYSQL_DATABASE=orm_test
|
|
||||||
- MYSQL_USER=beego
|
|
||||||
- MYSQL_PASSWORD=test
|
|
||||||
|
|
||||||
postgresql:
|
|
||||||
container_name: "beego-postgresql"
|
|
||||||
image: bitnami/postgresql:latest
|
|
||||||
ports:
|
|
||||||
- "5432:5432"
|
|
||||||
environment:
|
|
||||||
- ALLOW_EMPTY_PASSWORD=yes
|
|
||||||
ssdb:
|
|
||||||
container_name: "beego-ssdb"
|
|
||||||
image: wendal/ssdb
|
|
||||||
ports:
|
|
||||||
- "8888:8888"
|
|
||||||
memcache:
|
|
||||||
container_name: "beego-memcache"
|
|
||||||
image: memcached
|
|
||||||
ports:
|
|
||||||
- "11211:11211"
|
|
||||||
etcd:
|
|
||||||
command: >
|
|
||||||
sh -c "
|
|
||||||
etcdctl put current.float 1.23
|
|
||||||
&& etcdctl put current.bool true
|
|
||||||
&& etcdctl put current.int 11
|
|
||||||
&& etcdctl put current.string hello
|
|
||||||
&& etcdctl put current.serialize.name test
|
|
||||||
"
|
|
||||||
container_name: "beego-etcd"
|
|
||||||
environment:
|
|
||||||
- ALLOW_NONE_AUTHENTICATION=yes
|
|
||||||
# - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
|
|
||||||
image: bitnami/etcd
|
|
||||||
ports:
|
|
||||||
- "2379:2379"
|
|
||||||
- "2380:2380"
|
|
Loading…
Reference in New Issue
Block a user