Support reverse from reader #7

Merged
lunny merged 1 commits from lunny/reverse_reader into master 2020-03-10 07:54:41 +00:00
2 changed files with 44 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import (
"bytes"
"errors"
"html/template"
"io"
"io/ioutil"
"os"
"path/filepath"
@ -29,9 +30,12 @@ func reverse(rFile string) error {
return err
}
defer f.Close()
return reverseFromReader(f)
}
func reverseFromReader(rd io.Reader) error {
var cfg ReverseConfig
err = yaml.NewDecoder(f).Decode(&cfg)
err := yaml.NewDecoder(rd).Decode(&cfg)
if err != nil {
return err
}

View File

@ -7,10 +7,14 @@ package cmd
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"testing"
_ "github.com/mattn/go-sqlite3"
"github.com/stretchr/testify/assert"
"xorm.io/xorm"
)
var result = fmt.Sprintf(`package models
@ -32,3 +36,38 @@ func TestReverse(t *testing.T) {
assert.NoError(t, err)
assert.EqualValues(t, result, string(bs))
}
func TestReverse2(t *testing.T) {
type Outfw struct {
Id int `xorm:"not null pk autoincr"`
Sql string `xorm:"default '' TEXT"`
Template string `xorm:"default '' TEXT"`
Filename string `xorm:"VARCHAR(50)"`
}
dir, err := ioutil.TempDir(os.TempDir(), "reverse")
assert.NoError(t, err)
e, err := xorm.NewEngine("sqlite3", filepath.Join(dir, "db.db"))
assert.NoError(t, err)
assert.NoError(t, e.Sync2(new(Outfw)))
err = reverseFromReader(strings.NewReader(`
kind: reverse
name: mydb
source:
database: sqlite3
conn_str: '../testdata/test.db'
targets:
- type: codes
include_tables:
- a
- b
exclude_tables:
- c
language: golang
output_dir: ../models
`))
assert.NoError(t, err)
}