11import uuid
22from datetime import datetime , timezone
3+ from typing import Any
34
4- from sqlalchemy import Boolean , Column , DateTime , Integer , String
5+ import sqlalchemy as sa
56from sqlalchemy .dialects .postgresql import JSONB
67from sqlalchemy .ext .mutable import MutableDict
8+ from sqlalchemy .orm import Mapped
79
810import ckan .plugins .toolkit as tk
911from ckan import model
@@ -14,19 +16,33 @@ def _current_datetime():
1416
1517
1618class MetricConfig (tk .BaseModel ):
17- __tablename__ = "better_stats_metric_config"
18-
19- id = Column (String , primary_key = True , default = lambda : str (uuid .uuid4 ()))
20- metric_name = Column (String (100 ), unique = True , nullable = False , index = True )
21- enabled = Column (Boolean , default = True , nullable = False )
22- order = Column (Integer , default = 100 )
23- col_span = Column (Integer , default = 3 )
24- row_span = Column (Integer , default = 1 )
25- access_level = Column (String (20 ))
26- cache_timeout = Column (Integer , default = 3600 )
27- extras = Column (MutableDict .as_mutable (JSONB ), default = {})
28- created = Column (DateTime , default = _current_datetime )
29- modified = Column (DateTime , default = _current_datetime , onupdate = _current_datetime )
19+ __table__ = sa .Table (
20+ "better_stats_metric_config" ,
21+ tk .BaseModel .metadata ,
22+ sa .Column ("id" , sa .String , primary_key = True , default = lambda : str (uuid .uuid4 ())),
23+ sa .Column ("metric_name" , sa .String , nullable = False , index = True ),
24+ sa .Column ("enabled" , sa .Boolean , default = True , nullable = False ),
25+ sa .Column ("order" , sa .Integer , default = 100 ),
26+ sa .Column ("col_span" , sa .Integer , default = 3 ),
27+ sa .Column ("row_span" , sa .Integer , default = 1 ),
28+ sa .Column ("access_level" , sa .String (20 )),
29+ sa .Column ("cache_timeout" , sa .Integer , default = 3600 ),
30+ sa .Column ("extras" , MutableDict .as_mutable (JSONB ), default = {}),
31+ sa .Column ("created" , sa .DateTime , default = _current_datetime ),
32+ sa .Column ("modified" , sa .DateTime , default = _current_datetime , onupdate = _current_datetime ),
33+ )
34+
35+ id : Mapped [str ]
36+ metric_name : Mapped [str ]
37+ enabled : Mapped [bool ]
38+ order : Mapped [int ]
39+ col_span : Mapped [int ]
40+ row_span : Mapped [int ]
41+ access_level : Mapped [str ]
42+ cache_timeout : Mapped [int ]
43+ extras : Mapped [dict [str , Any ]]
44+ created : Mapped [datetime ]
45+ modified : Mapped [datetime ]
3046
3147 @classmethod
3248 def for_metric (cls , metric_name : str ) -> "MetricConfig | None" :
0 commit comments