Skip to content

missing schema when using interface #32

@cruvie

Description

@cruvie

Description

type User struct {
	kk_models.BaseModel[PBUser_UserStatus]
	Email    string `gorm:"column:email;type:text;default:'';not null" `
	RealName string `gorm:"column:real_name;type:text;default:'';not null"`
	Password string `gorm:"column:password;type:text;default:'';not null"`
	TelNum   string `gorm:"column:tel_num;type:text;default:'';not null" `
	IdCard   string `gorm:"column:id_card;type:text;default:'';not null"`
}

func (x *User) TableName() string {
	// user为pg的关键字
	return "ss.user"
}

type Query[T any] interface {
	// SELECT * FROM @@table WHERE id=@id
	GetByID(id string) (T, error)
}
	o, err := gorm.G[orm.User](kk_pg.GormClient).Where("id=?", "019a6d20-286d-7301-8e88-ffa3c7967212").Take(context.Background())
	assert.NoError(t, err)
	t.Logf("%+v", o) ✅

	byID, err := g.Query[orm.User](kk_pg.GormClient).GetByID(context.Background(), "019a6d20-286d-7301-8e88-ffa3c7967212")
	assert.NoError(t, err)❌
	t.Logf("%+v", byID)
2025/12/09 15:26:09 logger.go:172: /Users/cruvie/Documents/cruvie/ss/ss_go/service_base/models/g/query.go:37 ERROR: relation "user" does not exist (SQLSTATE 42P01)
[5.400ms] [rows:0] SELECT * FROM "user" WHERE id='019a6d20-286d-7301-8e88-ffa3c7967212'
    gen_test.go:68: 
        	Error Trace:	/Users/cruvie/Documents/cruvie/ss/ss_go/service_base/models/query/gen_test.go:68
        	Error:      	Received unexpected error:
        	            	ERROR: relation "user" does not exist (SQLSTATE 42P01)
        	Test:       	TestQuery
    gen_test.go:69: {BaseModel:{Id: CreatedAt:0001-01-01 00:00:00 +0000 UTC UpdatedAt:0001-01-01 00:00:00 +0000 UTC Status:Status_Unknown Remark:} Email: RealName: Password: TelNum: IdCard:}

right sql should be

SELECT * FROM "ss"."user" WHERE id='019a6d20-286d-7301-8e88-ffa3c7967212'

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions