blob: c1e229510dc3c1023dcf9f73b63282afc9caec79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
from datetime import datetime, timezone
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase, MappedAsDataclass, Mapper
from sqlalchemy import event, update
class Base(DeclarativeBase, MappedAsDataclass):
pass
db = SQLAlchemy(model_class=Base)
def init_db(app):
migrate = Migrate(app, db)
db.init_app(app)
@event.listens_for(Mapper, 'after_insert')
def insert_created_and_updated_at_columns(mapper, connection, target):
set_timestamps = (
update(mapper.local_table).
where(mapper.local_table.c.id == target.id).
values(created_at=datetime.now(timezone.utc),
updated_at=datetime.now(timezone.utc))
)
connection.execute(set_timestamps)
@event.listens_for(Mapper, 'before_update')
def set_updated_at_timestamp(mapper, connection, target):
set_updated_at = (
update(mapper.local_table).
where(mapper.local_table.c.id == target.id).
values(updated_at=datetime.now(timezone.utc))
)
connection.execute(set_updated_at)
|