GuilhermeTito / snow-orm

ORM para Delphi. Testado apenas com Firebird por enquanto.
MIT License
0 stars 1 forks source link

"ComparisonOperationBuilder" não trata corretamente datas. #1

Open GuilhermeTito opened 2 months ago

GuilhermeTito commented 2 months ago

Na função ComparisonOperationBuilder, valores dos tipos derivados de TDateTime estão sendo passados como texto sem aspas e isso gera erros de SQL.

GuilhermeTito commented 1 month ago

Do jeito que as coisas estão, não vejo como isso poderia ser resolvido de forma satisfatória. Ao passar um valor como Variant, não há como saber se era originalmente TDateTime, TDate ou TTime, o que é um problema na conversão para string.

Uma maneira que pensei de resolver isso seria criando subtipos da classe TNullable, a qual eu provavelmente teria que renomear, para os tipos de dados de cada SGDB.

No fim, isso vai acabar facilitando o processo de tornar o Snow ORM compatível com outros SGBDs além do Firebird, pois poderei definir como deverá ser feita a conversão para string em cada tipo individualmente.

GuilhermeTito commented 1 month ago

Um problema da solução proposta anteriormente é que as propriedades das classes que mapeiam entidades do banco de dados teriam que ser objetos, que precisam ser instanciados e destruídos. Também exigiria um passo a mais para acessar os valores das propriedades, pois em vez de, por exemplo, Cliente.Nome := 'João' teria que ser substituído por Cliente.Nome.Value := 'João'.

Vou pensar se há outra abordagem possível para solucionar o problema.