Vapor 4 et les dates

Bonjour,

je cherche a intégrer une date dans mon Model. Je le fais de cette manière :

@Field(key: « date »)
var date: Date

dans Paw, je fais un Create et la date passe si je respecte bien le format SO8601-formatted.
Par contre le serveur me transforme cette date:

1998-12-20T00:39:57Z

en ceci ;

914114397

Ensuite, si je fais un get pour obtenir la liste ( de la même manière que dans le cour), il y a une erreur 500 :

« error »:true,« reason »:"invalid field: date type: Date error: typeMismatch(Foundation.Date, Swift.DecodingError.Context(codingPath: [], debugDescription: « Could not initialize Date from 851042397. », underlyingError: nil))

Je ne trouve pas d’info sur le sujet.
Peut être que je ne peux pas utiliser un format date?

Si quelqu’un a une réponse, je suis preneur.
merci

Tu veux faire quoi exactement, avoir la date de création ?

Non, il s’agit d’un événement avec un titre et une date. j’aimerais pouvoir rentrer la date de l’événement. Donc une date futur choisi par l’utilisateur, qui en plus de de rappeler la date à l’utilisateur me permettrais de trier les différents événements à venir dans un tableau.

En résumé : une date choisie -> sauvegarder dans la BDD -> la récuperer pour l’afficher.

Alors, dans ton Model le :

@Field(key: « date »)
var date: Date

Est correct pour moi.

Sachant, que je début avec Vapor, je ne sais pas tout et je ne sais pas si, c’est la meilleure solution non plus, d’autant plus que Vapor 4 est récent donc, encore difficile de trouver des réponses.

Après cette parenthèse, toujours dans ton Model dans le init, as-tu bien mis :

init(data:Date) {
      self.date = date
}

et dans Migration dans la fonction prepare as-tu ajouté cette ligne :

.field("date", .datetime)

EDIT BONUS :

Si, tu veux connaitre quand les données ont été créées et quand elles sont mises à jour, voilà ce qu’il faut faire :

Dans le Model :

@Timestamp(key: "created_at", on: .create)
var createdAt: Date?

@Timestamp(key: "updated_at", on: .update)
var updatedAt: Date?

Pas besoin de les initialiser.

Et dans Migration :

database.schema()
    .field("created_at", .datetime)
    .field("updated_at", .datetime)
    .create()

Et bien merci, la solution est dans ta réponse.

J’étais bon pour le Model et dans le init.
Mon erreur était dans Migration:
.field(« date », .date)
au lieu de :
.field(« date », .datetime)

et merci pour le bonus .

Service.

Je ne sais pas, si tu as fait une erreur avant, mais ça fonctionne uniquement avec : .datetime.

Il y a bien .date et .time, mais pour l’instant la doc pour Fluent n’est pas encore disponible donc, je ne sais pas a quoi ils servent.