GenieFramework / SearchLight.jl

ORM layer for Genie.jl, the highly productive Julia web framework
https://genieframework.com
MIT License
139 stars 16 forks source link

Date and DateTimes in DB Schemas #19

Open Akaame opened 5 years ago

Akaame commented 5 years ago

Hi,

I am fairly new to Julia and I have started out using Genie Framework just today.

I created this model with a Date field in it:

` using SearchLight using Dates

mutable struct Customer <: AbstractModel
_table_name::String
_id::String
_serializable::Vector{Symbol}

Name::String
CreateTime::Date
id::DbId
end

`

It is correctly saved to SQLite as type of "DATE". However, when I try to read the record it fails to convert String to type Date at the line below. Conversion line

convert(Dates.Date, "2019-09-01") throws the same exception. I could not find a workaround for this on the Internet. What is the correct approach for developers to work with Date types?

essenciary commented 5 years ago

@Akaame It's hard to tell without the full error stack trace and the output of julia> versioninfo() and pkg> st. It would help if you can share that when opening any issue with any Julia packages.

My guess is, Julia/Genie/SearchLight doesn't know how to convert the String to Date.

In order to convert a string to a date you need parse:

parse(Date, "2019-09-01")
2019-09-01

Add this to config/initializers/converters.jl:

using Dates
convert(::Type{Date}, s::String) = parse(Date, s)

Then restart the app, it should work.

Akaame commented 5 years ago

Thanks for your quick response. To my understanding, we are adding a convert overload to make String to Date conversion work. Are there any future plans to add this into the framework?

Thank you.

essenciary commented 5 years ago

I already did, it's on v0.17#master :) https://github.com/GenieFramework/Genie.jl/blob/master/files/new_app/config/initializers/converters.jl