simolus3 / drift

Drift is an easy to use, reactive, typesafe persistence library for Dart & Flutter.
https://drift.simonbinder.eu/
MIT License
2.44k stars 353 forks source link

createdAt & updatedAt columns #3055

Open dickermoshe opened 1 week ago

dickermoshe commented 1 week ago
simolus3 commented 1 week ago

We can define these as mixins, which drift will consider if applied to a table, e.g

mixin DateColumns on Table {
  DateTimeColumn get createdAt => dateTime().default(currentDateAndTime)();
}

Dealing with updatedAt is more complicated of course, I usually advice using triggers but I'm not sure if something that invasive should be a simple thing to apply.

im-trisha commented 4 days ago

Well, I wanted to ignore this and just live with the fact that I couldn't have a simple updatedAt column but this was just a week ago so I may as well ask it

I'd honestly love having updatedAt/deletedAt as a simple-to-apply strategy, they are both really useful and a lot of ORMs implement them. Emphasis on the deletedAt though, as it was not mentioned in the original post

Thus being said, if I may be a little greedy, it'd be wonderful if, not only it'd be simple to apply, but also being able to soft delete a row with a simple boolean + the select doesn't count soft deleted (if not explicitely stated)

dickermoshe commented 3 days ago

deletedAt sounds like a really smart idea, but It's out of scope for an ORM, which Drift aims to be. Even the Django ORM, which borders on being a "Data Framework", doesn't have such a feature.

I love the idea though. It's sick.

im-trisha commented 2 days ago

Yes i get what you're saying, I've "had" the idea from GORM, I didn't even need it but at that point that was just too cool to not use :)