Есть такой классный конструктор сайтов - Creatium. И в нем есть возможность подключать, например, Google Sheets в качестве базы данных. А с недавних пор, по API можно подключить и любую другую.
В одной из моих задумок, которые я пилю в рамках проекта platva.online планируется довольно большой объем данных, которые должны храниться в БД, тысячи строк и с десяток таблиц. И так как с одной стороны в Google Sheets есть ограничение на количество строк, а с другой в Creatium есть тарификация всего, что больше 100 строк, то я подумал что настало время осваивать MySQL.
И так как я не программист вообще, все мои знания ограничиваются css, html и знанием, что JS в целом существует, путь этот был тернист и запутан и содержит столько вселенской боли, что периодически они прорываются матом в текст. Я хуй знает как это работает, но это так. Кстати, эта фраза могла бы быть заголовком этой статьи.
Самый простой путь подключить MySQL описан в мануале самого Creatium. (вот тут). И для супер простой задачи и нетребовательного проекта это в целом работает. Ты форкаешь код в napkin.io, арендуешь базу данных у хостера и вносишь данные в соответствующий раздел.
И в целом на этом все начинает работать. Кстати, довольно медленно работать. Но к этому я еще вернусь.
Разочарование пришло, когда я понял, что в стандартном коннекторе, есть только равенство, а братством даже не пахнет. Ну то есть, только такая конструкция: “id=2”. Тогда база данных возвращает строку или строки. Но если нужно сделать фильтрацию товаров через адресную строку, то всё идет нахер, потому что конструкция “id=” возвращает ожидаемо ничего.
А если тебе нужно, что бы было не точное соответствие, догоняй всё, вам по пути.
Этого, безусловно, следовало ожидать, потому что это базовая конфигурация и вообще просто пример. Спасибо и на этом.
И вот посмотрев грустным взглядом на код, который я как собака весь понимаю, а переписать как мне нужно не могу, я пошел посмотреть, что мне скажут в KWORK.
Сказали мне там-готовь деньги. А денег жалко. Да и не в деньгах дело, деньги-брызги, а принцип-не нанимать программиста для этого проекта важен.
Но мы живем в 2к23, как говорят, хотя я живу в 10корп.3, но не суть, а это век ИИ, AI и GPT. И я пошел в ChatGPT за кодом. Скормил ему код, который есть в мануале и сказал: сделай так, что бы пустые значения игнорировались. И спустя час и 15 версий, предложенных ботом у меня появился код, который работает:
const whereParts = [];
for (const key in query.properties) {
const value = query.properties[key];
if (value !== undefined && value !== null && value !== '') {
whereParts.push(`${cleanEntityName(key)} = ?`);
placeholders.push(value);
}}
Этим кодом я поделился с поддержкой Creatium и они его добавили в мануал. Так что велком, пользуйтесь на здоровье.
Вообще отдельно про ChatGPT. Это великий инструмент, но с ним нужно уметь разговаривать. Я в процессе вынес для себя несколько правил, пока работал над коннектором MySQL: