gen icon indicating copy to clipboard operation
gen copied to clipboard

feat: support native SQL as custom fields

Open mimicode opened this issue 1 year ago • 1 comments

  • [x] Do only one thing
  • [x] Non breaking API changes
  • [x] Tested

What did this pull request do?

support native SQL as custom fields

User Case Description

field.NewFieldRaw("if(column1=?,column2,column3)", "1")

field.NewFieldRaw("if(column1=?,column2,column3)", field.NewField("", "new_id"))

mimicode avatar Sep 13 '24 05:09 mimicode

https://github.com/go-gorm/gen/issues/1212

mimicode avatar Sep 13 '24 05:09 mimicode

When can this be merged?

shiyuecamus avatar Nov 29 '24 13:11 shiyuecamus

anxious!

shiyuecamus avatar Jan 06 '25 06:01 shiyuecamus

I need it.

serious-snow avatar Feb 27 '25 08:02 serious-snow

@tr1v3r 急需此功能pr,能否合并发版?

OneSeven avatar Mar 14 '25 07:03 OneSeven

@tr1v3r 急需此功能pr,能否合并发版?

作者直接忽视咱们

shiyuecamus avatar Mar 17 '25 12:03 shiyuecamus

@tr1v3r 急需此功能pr,能否合并发版?

这个可能会引入SQL注入漏洞

tr1v3r avatar Mar 17 '25 12:03 tr1v3r

@tr1v3r 急需此功能pr,能否合并发版?

这个可能会引入SQL注入漏洞

有道理,请教一下如果我需要使用sql原生的function应该怎么做呢?

shiyuecamus avatar Mar 17 '25 12:03 shiyuecamus

@tr1v3r 急需此功能pr,能否合并发版?

这个可能会引入SQL注入漏洞

有道理,请教一下如果我需要使用sql原生的function应该怎么做呢?

原本的设计是使用动态SQL做:https://gorm.io/gen/dynamic_sql.html, 如果不想用这个但是一定要用一些raw function可以在特定场景调用UnderlyingDB().Raw()自己负责SQL的安全性进行查询

tr1v3r avatar Mar 17 '25 12:03 tr1v3r

还有一种解决方案:NewFieldRaw -> NewUnsafeFieldRaw 明确声明Unsafe,安全性方面使用者自己保证

tr1v3r avatar Mar 17 '25 12:03 tr1v3r

@tr1v3r 急需此功能pr,能否合并发版?

这个可能会引入SQL注入漏洞

有道理,请教一下如果我需要使用sql原生的function应该怎么做呢?

原本的设计是使用动态SQL做:https://gorm.io/gen/dynamic_sql.html, 如果不想用这个但是一定要用一些raw function可以在特定场景调用UnderlyingDB().Raw()自己负责SQL的安全性进行查询

好的。多谢

shiyuecamus avatar Mar 17 '25 13:03 shiyuecamus

还有一种解决方案:NewFieldRaw -> NewUnsafeFieldRaw 明确声明Unsafe,安全性方面使用者自己保证

NewUnsafeFieldRaw请问这个函数在哪个包下面?

shiyuecamus avatar Mar 17 '25 13:03 shiyuecamus

还有一种解决方案:NewFieldRaw -> NewUnsafeFieldRaw 明确声明Unsafe,安全性方面使用者自己保证

NewUnsafeFieldRaw请问这个函数在哪个包下面?

就是这个PR的,不过还没有改名,改名之后可以合入

tr1v3r avatar Mar 17 '25 14:03 tr1v3r

  • [x] Do only one thing
  • [x] Non breaking API changes
  • [x] Tested

What did this pull request do?

support native SQL as custom fields

User Case Description

field.NewFieldRaw("if(column1=?,column2,column3)", "1")

field.NewFieldRaw("if(column1=?,column2,column3)", field.NewField("", "new_id"))

大佬,换个名字吧。这个PR等了个把月了 @mimicode

shiyuecamus avatar Mar 18 '25 01:03 shiyuecamus

已经修改了

还有一种解决方案:NewFieldRaw -> NewUnsafeFieldRaw 明确声明Unsafe,安全性方面使用者自己保证

NewUnsafeFieldRaw请问这个函数在哪个包下面?

就是这个PR的,不过还没有改名,改名之后可以合入

已经修改函数名称和不安全提示

mimicode avatar Mar 20 '25 01:03 mimicode

已经修改了

还有一种解决方案:NewFieldRaw -> NewUnsafeFieldRaw 明确声明Unsafe,安全性方面使用者自己保证

NewUnsafeFieldRaw请问这个函数在哪个包下面?

就是这个PR的,不过还没有改名,改名之后可以合入

已经修改函数名称和不安全提示

@tr1v3r 请知晓

shiyuecamus avatar Mar 20 '25 02:03 shiyuecamus