copygen

package
v0.3.0 Latest Latest
Warning

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

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

README

Example: Tag

The example uses the tag option to match three models.

./domain/domain.go

// Package domain contains business logic models.
package domain

// Account represents a user account.
type Account struct {
	ID       int    `api:"user_id"`
	Name     string `api:"name"`
	Email    string `other:"email"`
	Username string `api:"username" other:"tag"`
	Password string // The password field will not be copied.
}

./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    `api:"id"`
	Name     string `api:"name"`
	Password string
	Email    string `other:"email"`
}

// User represents the data model for a user.
type User struct {
	UserID   int    `api:"user_id"`
	Username string `api:"username,omitempty"`
}

YML

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

# Templates and custom options aren't used for this example.

Go

Match all fields (.*) according to their respective api tag.

// Copygen defines the functions that will be generated.
type Copygen interface {
	// tag .* api
	ModelsToDomain(*models.Account, *models.User) *domain.Account
}

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 (
	"github.com/switchupcb/copygen/examples/tag/domain"
	"github.com/switchupcb/copygen/examples/tag/models"
)

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

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 ModelsToDomain

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

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.

Jump to

Keyboard shortcuts

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