Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Recorder constants."""
2 
3 from __future__ import annotations
4 
5 from enum import StrEnum
6 from typing import TYPE_CHECKING
7 
8 from homeassistant.const import (
9  ATTR_ATTRIBUTION,
10  ATTR_RESTORED,
11  ATTR_SUPPORTED_FEATURES,
12  EVENT_RECORDER_5MIN_STATISTICS_GENERATED, # noqa: F401
13  EVENT_RECORDER_HOURLY_STATISTICS_GENERATED, # noqa: F401
14 )
15 from homeassistant.helpers.json import JSON_DUMP # noqa: F401
16 
17 if TYPE_CHECKING:
18  from .core import Recorder # noqa: F401
19 
20 
21 SQLITE_URL_PREFIX = "sqlite://"
22 MARIADB_URL_PREFIX = "mariadb://"
23 MARIADB_PYMYSQL_URL_PREFIX = "mariadb+pymysql://"
24 MYSQLDB_URL_PREFIX = "mysql://"
25 MYSQLDB_PYMYSQL_URL_PREFIX = "mysql+pymysql://"
26 DOMAIN = "recorder"
27 
28 CONF_DB_INTEGRITY_CHECK = "db_integrity_check"
29 
30 MAX_QUEUE_BACKLOG_MIN_VALUE = 65000
31 MIN_AVAILABLE_MEMORY_FOR_QUEUE_BACKLOG = 256 * 1024**2
32 
33 # The maximum number of rows (events) we purge in one delete statement
34 
35 # sqlite3 has a limit of 999 until version 3.32.0
36 # in https://github.com/sqlite/sqlite/commit/efdba1a8b3c6c967e7fae9c1989c40d420ce64cc
37 # We can increase this back to 1000 once most
38 # have upgraded their sqlite version
39 SQLITE_MAX_BIND_VARS = 998
40 
41 # The maximum bind vars for sqlite 3.32.0 and above, but
42 # capped at 4000 to avoid performance issues
43 SQLITE_MODERN_MAX_BIND_VARS = 4000
44 
45 DEFAULT_MAX_BIND_VARS = 4000
46 
47 DB_WORKER_PREFIX = "DbWorker"
48 
49 ALL_DOMAIN_EXCLUDE_ATTRS = {ATTR_ATTRIBUTION, ATTR_RESTORED, ATTR_SUPPORTED_FEATURES}
50 
51 ATTR_KEEP_DAYS = "keep_days"
52 ATTR_REPACK = "repack"
53 ATTR_APPLY_FILTER = "apply_filter"
54 
55 KEEPALIVE_TIME = 30
56 
57 CONTEXT_ID_AS_BINARY_SCHEMA_VERSION = 36
58 EVENT_TYPE_IDS_SCHEMA_VERSION = 37
59 STATES_META_SCHEMA_VERSION = 38
60 LAST_REPORTED_SCHEMA_VERSION = 43
61 
62 LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION = 28
63 
64 INTEGRATION_PLATFORM_COMPILE_STATISTICS = "compile_statistics"
65 INTEGRATION_PLATFORM_LIST_STATISTIC_IDS = "list_statistic_ids"
66 INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES = "update_statistics_issues"
67 INTEGRATION_PLATFORM_VALIDATE_STATISTICS = "validate_statistics"
68 
69 INTEGRATION_PLATFORM_METHODS = {
70  INTEGRATION_PLATFORM_COMPILE_STATISTICS,
71  INTEGRATION_PLATFORM_LIST_STATISTIC_IDS,
72  INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES,
73  INTEGRATION_PLATFORM_VALIDATE_STATISTICS,
74 }
75 
76 
77 class SupportedDialect(StrEnum):
78  """Supported dialects."""
79 
80  SQLITE = "sqlite"
81  MYSQL = "mysql"
82  POSTGRESQL = "postgresql"