diff --git a/src/database/upgrade.c b/src/database/upgrade.c index 042a37ae978cdc7cf3dcb2a3e6d0afc9157bec76..b2209d5a2fc4fa678241c588b90588ab18bbd438 100644 --- a/src/database/upgrade.c +++ b/src/database/upgrade.c @@ -15,27 +15,30 @@ struct sql_table_description { const LKT_DATABASE_VERSION minimal_version; }; -#define DCL_SQL_FIELD(field_name, version) \ - ((struct sql_field_description){ .name = field_name, \ - .minimal_version = (LKT_DATABASE_VERSION_##version) }) - -#define DCL_SQL_FIELD_NULL ((struct sql_field_description){ .name = NULL, .minimal_version = 0 }) - -#define DCL_SQL_TABLE(tbl_name, ...) \ - ((struct sql_table_description){ \ - .name = #tbl_name, \ - .fields = { __VA_ARGS__, DCL_SQL_FIELD_NULL }, \ - .minimal_version = LKT_DATABASE_VERSION_ALPHA, \ - }) - -#define DCL_SQL_TABLE_VERSION(tbl_name, version, ...) \ - ((struct sql_table_description){ \ - .name = #tbl_name, \ - .fields = { __VA_ARGS__, DCL_SQL_FIELD_NULL }, \ - .minimal_version = LKT_DATABASE_VERSION_##version, \ - }) - -static struct sql_table_description sql_tables_list[] = { +#define LKT_DATABASE_VERSION_ALPHA LKT_DATABASE_VERSION_ALPHA +#define LKT_DATABASE_VERSION_MK_7_1 LKT_DATABASE_VERSION_MK_7_1 +#define LKT_DATABASE_VERSION_MK_7_3 LKT_DATABASE_VERSION_MK_7_3 + +#define DCL_SQL_FIELD(field_name, version) \ + ((const struct sql_field_description){ .name = field_name, \ + .minimal_version = (LKT_DATABASE_VERSION_##version) }) + +#define DCL_SQL_FIELD_NULL \ + ((const struct sql_field_description){ .name = NULL, .minimal_version = 0 }) + +#define DCL_SQL_TABLE(tbl_name, ...) \ + { \ + .name = #tbl_name, .fields = { __VA_ARGS__, DCL_SQL_FIELD_NULL }, \ + .minimal_version = LKT_DATABASE_VERSION_ALPHA, \ + } + +#define DCL_SQL_TABLE_VERSION(tbl_name, version, ...) \ + { \ + .name = #tbl_name, .fields = { __VA_ARGS__, DCL_SQL_FIELD_NULL }, \ + .minimal_version = LKT_DATABASE_VERSION_##version, \ + } + +static const struct sql_table_description sql_tables_list[] = { DCL_SQL_TABLE(kara, // DCL_SQL_FIELD("id", ALPHA), // DCL_SQL_FIELD("song_name", ALPHA), // @@ -116,8 +119,8 @@ CONSTRUCTOR_FUNCTION ___verify_table_descriptions(void) { for (size_t i = 0; i < sql_tables_list_count; ++i) { - struct sql_table_description *table = &sql_tables_list[i]; - size_t j = LKT_TABLE_FIELDS_MAX - 1; + const struct sql_table_description *table = &sql_tables_list[i]; + size_t j = LKT_TABLE_FIELDS_MAX - 1; while (j) { if (table->fields[j].name == NULL) break; @@ -280,9 +283,10 @@ database_get_version_name(LKT_DATABASE_VERSION version) #include <lektor/internal/dbversion.def> case ___LKT_DATABASE_VERSION_COUNT: LOG_ERROR("DB", "Unknown database version %d", version); - return "UNKNOWN"; + break; } #undef database_version + return "UNKNOWN"; } LKT_DATABASE_VERSION