copygen

package
v0.3.4 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2022 License: GPL-3.0, MIT-0 Imports: 3 Imported by: 0

README

Example: Error

The error example uses templates to return a nil error from the mapping function.

./domain/domain.go

// Package domain contains business logic models.
package domain

// Account represents a user account.
type Account struct {
	ID     int
	UserID string
	Name   string
	Other  string // The other field is not used.
}

./models/model.go

// Package models contains data storage models (i.e database).
package models

// Account represents the data model for account.
type Account struct {
	ID       int
	Name     string
	Password string
	Email    string
}

// A User represents the data model for a user.
type User struct {
	UserID   int
	Name     int
	UserData string
}

YML

# Define where the code will be generated.
generated:
  setup: ./setup.go
  output: ../copygen.go

  # Define the optional custom templates used to generate the file (.go, .tmpl supported).
  template: ../template/generate.go

# Define custom options (which are passed to generator options) for customization.
custom:
  option: The possibilities are endless.

The error example ignores the custom fields (loaded as a Generator Option).

Go

// Package copygen contains the setup information for copygen generated code.
package copygen

import (
	c "strconv"

	"github.com/switchupcb/copygen/examples/main/domain"
	"github.com/switchupcb/copygen/examples/main/models"
)

// Copygen defines the functions that will be generated.
type Copygen interface {
	// custom see table in the README for options
	ModelsToDomain(*models.Account, *models.User) *domain.Account
}

/* Define the function and field this converter is applied to using regex. */
// convert .* models.User.UserID
// Itoa converts an integer to an ascii value.
func Itoa(i int) string {
	return c.Itoa(i)
}

Use pointers to avoid allocations.

Output

copygen -yml path/to/yml

// Code generated by github.com/switchupcb/copygen
// DO NOT EDIT.

// Package copygen contains the setup information for copygen generated code.
package copygen

import (
	c "strconv"

	"github.com/switchupcb/copygen/examples/error/domain"
	"github.com/switchupcb/copygen/examples/error/models"
)

/* Define the function and field this converter is applied to using regex. */
// Itoa converts an integer to an ascii value.
func Itoa(i int) string {
	return c.Itoa(i)
}

// ModelsToDomain copies a *models.Account, *models.User to a *domain.Account.
func ModelsToDomain(tA *domain.Account, fA *models.Account, fU *models.User) error {
	// *domain.Account fields
	tA.ID = fA.ID
	tA.UserID = Itoa(fU.UserID)
	tA.Name = fA.Name

	return nil
}

Documentation

Overview

Package copygen contains the setup information for copygen generated code.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Itoa

func Itoa(i int) string
Define the function and field this converter is applied to using regex.

Itoa converts an integer to an ascii value.

func ModelsToDomain

func ModelsToDomain(tA *domain.Account, fA *models.Account, fU *models.User) error

ModelsToDomain copies a *models.Account, *models.User to a *domain.Account.

Types

This section is empty.

Directories

Path Synopsis
Package domain contains business logic models.
Package domain contains business logic models.
Package models contains data storage models (i.e database).
Package models contains data storage models (i.e database).
Package copygen contains the setup information for copygen generated code.
Package copygen contains the setup information for copygen generated code.
Package template provides a template used by copygen to generate custom code.
Package template provides a template used by copygen to generate custom code.

Jump to

Keyboard shortcuts

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