Skip to content

sadasidha/modelgenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Model Generator For MySQL with GOLang

comand

## generate model files from model.json
mysqlmodel process model.json

## to generate model file under template-dest directory described in model.json, application will ask for hostname, username, password and database  
mysqlmodel model employee model.json --dsn "username:password@tcp(hostname)/databasename?additional=param"

model.json

{
  "template-src": "company-profile/mysql-template/",
  "template-dest": "company-profile/app/models/",
  "mysql-golbal-object": "app.DB",
  "package-name": "models"
}

note: This is expected that compny-profile created under ${GOPATH} note: mysql-golbal-object will be used to generate query command, such as app.DB.Query("SELECT * FROM ")

under path /home/god/gopath/src/company-profile/mysql-template/ file employee.json

{
  "filename": "employee",
  "imports": ["simple/app"],
  "struct": [
    {
      "name": "id",
      "type": "int",
      "isId": true
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "city",
      "type": "string"
    }
  ],
  "enable": ["fetchall", "insert", "update", "count"],
  "selectBy": [["id"], ["name", "city"], ["city"]],
  "extended": "employee.ext"
}

under path /home/god/gopath/src/company-profile/mysql-template/ file employee.exe

func GetPartialMatchByName(namePart string) Employee {
  app.DB.Query("...")
  ...
  return emp
}

after executing mysqlmodel process model.json

package models

import (
	"simple/app"
	"database/sql"
)

type Employee struct {
	id   int
	name string
	city string
}

func (e Employee) GetId() int {
	return e.id
}

func (e Employee) SetId(id int) {
	e.id = id
}

func (e Employee) GetName() string {
	return e.name
}

func (e Employee) SetName(name string) {
	e.name = name
}

func (e Employee) GetCity() string {
	return e.city
}

func (e Employee) SetCity(city string) {
	e.city = city
}


func transform(rows *sql.Rows) []Employee {
	employee := Employee{}
	res := []employee{}
	for rows.Next() {
		var id int
		var name string
		var city string
		err := rows.Scan(&id, &name, &city)
		if err != nil {
			panic(err.Error())
		}

		emp.id = id
		emp.name = name
		emp.city = city
		res = append(res, emp)
	}
	return res
}

func (_ Employee) FetchAll() []Employee {
	rows, err := app.DB.Query("SELECT id, name, city from employee")
	if err != nil {
		return nil
	}

	defer rows.Close()
	toRet := transform(rows)
	return toRet
}

func Insert() Employee {
	rows, err := app.DB.Query("SELECT id, name, city from employee")
	if err != nil {
		return nil
	}

	defer rows.Close()
	toRet := transform(rows)
	return toRet
}

##  TODO UNDER CONSTRUCTION

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published