jmattheis / goverter

Generate type-safe Go converters by simply defining an interface
https://goverter.jmattheis.de/
MIT License
487 stars 46 forks source link

Generating in the same namespace. #100

Closed ryan961 closed 9 months ago

ryan961 commented 9 months ago

Have you read the project readme?

Describe your question Hello, may I ask how should goverter (v1.1.0) be configured under the same directory level? I'm still getting the import cycle not allowed error after configuring like below:

converter.go

package data

import (
    "time"

    "example/internal/biz"
)

type (
    // goverter:converter
    // goverter:output:file ./converter_gen.go
    // goverter:output:package :data
    // goverter:ignoreMissing
    // goverter:extend TimeToTime
    Converter interface {
        ConvertUser(*User) *biz.UserInfo
    }
)
...
➜  goverter gen ./internal/data

converter_gen.go

// Code generated by github.com/jmattheis/goverter, DO NOT EDIT.

package data

import (
    biz "example/internal/biz"
    data "example/internal/data"
)

type ConverterImpl struct{}

func (c *ConverterImpl) ConvertBizUserInfo(source *biz.UserInfo) *data.User {
......

data "example/internal/data" is redundant.

I looked up the issues, but they all seem out of date.

jmattheis commented 9 months ago

Configure the full output package instead of only the package name (:data). https://goverter.jmattheis.de/#/config/output?id=outputpackage-package

ryan961 commented 9 months ago

Thank you for reply. It is OK after just trying :)

package data

import (
    "time"

    "example/internal/biz"
)

type (
    // goverter:converter
    // goverter:output:file ./converter_gen.go
    // goverter:output:package example/internal/data:data
    // goverter:ignoreMissing
    // goverter:extend TimeToTime
    Converter interface {
        ConvertUser(*User) *biz.UserInfo
    }
)
...
jmattheis commented 9 months ago

Awesome, I've added an FAQ to the website including this question: https://goverter.jmattheis.de/faq