$ grep -r Tag: «couchdb»

-rw-r--r-- 4.1K 28 марта 2026 · 506D0D0 · ~2 мин

Swift клиент для CouchDB 2.4.0

swift couchdb swift package vapor open source

Основные изменения

  • Проведен рефакторинг внутреннего устройства выполнения запросов в CouchDBClient для использования более чистых потоков в стиле async/await и уменьшения дублирования логики обработки ответов.
  • Улучшены пути буферизации и декодирования для сырых и типизированных запросов с упором на более безопасное выполнение в EventLoopGroup и повышение производительности при обработке ответов.
  • Расширено тестовое покрытие для выполнения запросов на базе EventLoopGroup, включая сырые и типизированные get, сырые и типизированные find, загрузку вложений, вывод списков индексов Mango и объяснение запросов Mango.
  • Обновлена документация для пользователей: README, статьи DocC и руководства (tutorials).
  • Обновлены инструменты документирования для новых рабочих процессов DocC, включая поддержку экспорта в Markdown.

Улучшения API и поведения

  • Добавлена и доработана поддержка EventLoopGroup для большего количества путей запросов в CouchDBClient.
  • Улучшены внутренние пути обработки ошибок и поведение декодирования ответов для операций CouchDB.
  • Упрощена многоуровневая структура помощников запросов и уменьшено дублирование кода обработки запросов/ответов.
  • Улучшено поведение, связанное с вложениями, и соответствующие тесты.
  • В манифест пакета добавлена поддержка visionOS.

Документация

  • Исправлены и обновлены примеры в README для использования CRUD и запросов Mango.
  • Обновлены целевые страницы DocC для лучшего отражения текущего API.
  • Исправлены фрагменты кода в руководстве по продвинутым запросам Mango, чтобы они соответствовали текущему типизированному API запросов.
  • Исправлены примеры в руководстве по Vapor.
  • Исправлена настройка пакета и зависимостей в руководстве по Hummingbird.
  • Обновлен buildDocs.sh для поддержки:
    • настраиваемого пути вывода и базового пути хостинга;
    • встраивания контента для статического хостинга;
    • экспериментального вывода в Markdown;
    • генерации манифеста Markdown.
  • Добавлен этап постобработки в buildDocs.sh, который внедряет относительную ссылку на Markdown в сгенерированные HTML-страницы DocC.

Инструменты и зависимости

  • Обновлены зависимости пакета в Package.resolved.
  • Обновлена матрица версий Swift для процесса сборки под Ubuntu.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-2-4-0.md
-rw-r--r-- 2.1K 1 авг. 2025 · 508C136 · ~1 мин

Swift клиент для CouchDB 2.3.0

swift couchdb swift package vapor open source

Клиент CouchDB для Swift 2.3.0

Недавно я реализовал функцию, которую давно хотел добавить в CouchDB Swift client. Это поддержка Mango Queries. Наконец-то всё готово в версии 2.3.0. Кажется, это последняя крупная функция.

Список изменений:

  • Представлен надежный и типобезопасный MangoQuery API для построения сложных селекторов, проекций, сортировки и пагинации в CouchDB.
  • Добавлена поддержка указания индексов через useIndex в запросах для оптимизации производительности.
  • Добавлена полноценная поддержка загрузки, скачивания и удаления вложений документов (файлов/изображений).
  • Комплексный набор тестов для Attachments API обеспечивает надежность операций с файлами.
  • Добавлены модели и API для создания, перечисления и управления индексами Mango (MangoIndex, IndexDefinition).
  • В документацию теперь включены обучающие примеры и фрагменты кода для создания индексов.
  • Добавлена поддержка эндпоинта CouchDB Mango _explain через MangoExplainResponse, чтобы можно было проверить, как выполняются запросы и какие индексы используются.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-2-3-0.md
-rw-r--r-- 3.2K 8 июля 2025 · 931C7C2 · ~2 мин

Недавние обновления моих проектов

swift couchdb app store release informer open source ai

В последнее время я много экспериментирую с AI-агентами, и это серьёзно вдохновило меня обновить мои проекты. Работа с реальными задачами делает процесс гораздо интереснее.

Swift клиент для CouchDB

Вышло 2 новых релиза библиотеки couchdb-swift. Copilot любезно добавил в библиотеку больше юнит-тестов для покрытия различных сценариев использования. В основном они завершались ошибками. Мне всё ещё пришлось многое дорабатывать вручную, но это подкинуло мне пару идей. Поэтому в этих двух последних релизах я добавил более детальную обработку ошибок. Также он нашел и исправил несколько мелких багов, проверил мой PR и предложил некоторые улучшения. Он еще далеко не идеален, но всё равно впечатляет.

Бот Release Informer для Telegram

В какой-то момент я обнаружил, что Copilot Agent стал доступен для моей учетной записи, и теперь я могу просто создать issue на GitHub, назначить его на агента и посмотреть, что он сделает. Я начал с запроса обновить README для Release Informer Bot, добавив подробности о том, как он работает и как его настроить.

После того как агент закончил работу над обновленным README, у меня появилась еще одна идея: процесс настройки можно автоматизировать. Поэтому я открыл Visual Studio Code и попросил Copilot добавить автоматическое создание необходимой базы данных и её настройку с нужными индексами CouchDB.

Он и тут справился неплохо, но всё равно потребовались некоторые ручные правки и изменения. И в процессе этого появился еще один релиз библиотеки CouchDB client, так как я захотел полагаться на корректную ошибку «not found».

Трудно сказать, сколько времени мне сэкономил Copilot. Но определенно много. Включая мой любимый автоматический перевод строк. Надеюсь, это вдохновит меня выпускать еще больше обновлений.

[↵] открыть пост recent-updates-of-my-projects-july-2025.md
-rw-r--r-- 1.9K 16 апр. 2025 · B2756B3 · ~1 мин

Swift клиент для CouchDB версия 2

swift couchdb swift package vapor open source

Клиент CouchDB для Swift, версия 2

Недавно я выпустил несколько новых версий CouchDB клиента для Swift. Последняя версия — 2, и она включает в себя несколько ключевых изменений:

  • Обновлена минимально необходимая версия Swift до 6.0.
  • Внедрена поддержка Swift Concurrency. CouchDBClient был обновлен и теперь является actor.
  • Библиотека была переименована из couchdb-vapor в couchdb-swift, чтобы лучше отражать её назначение как универсального клиента CouchDB для Swift, а не только для использования с Vapor.
  • Внесены изменения в инициализатор. Вместо передачи множества параметров теперь используется структура Config.
  • Теперь вы можете передать собственный экземпляр HTTPClient для использования в клиенте.
  • Добавлены переводы сообщений об ошибках.
  • Представлен специальный туториал по интеграции CouchDBClient с серверным фреймворком Hummingbird.
  • Добавлен метод shutdown() для корректного освобождения ресурсов, связанных с HTTPClient.

CouchDB Client на GitHub | Документация с примерами и руководствами.

Star Fork

[↵] открыть пост couchdb-client-for-swift-version-2.md
-rw-r--r-- 2.0K 8 апр. 2024 · BA68FE9 · ~1 мин

Swift клиент для CouchDB 1.5.0

swift couchdb swift package vapor open source

Клиент Swift для CouchDB 1.5.0

И вот, ещё одна новая версия библиотеки CouchDB client. После недавнего поста про версию 1.4.0, в Swift on Server вышла новая версия async-http-client, которая включает новую реализацию синглтона клиента. Теперь это HTTPClient.shared, поэтому я обновил библиотеку CouchDB, чтобы адаптировать её к этому изменению. Это также означает, что вам больше не нужно вызывать httpClient.syncShutdown(), если используется синглтон. Кроме того, они подняли минимальную версию Swift до 5.8 (что я также сделал в версии 1.4.0 клиента для CouchDB). Так что я продолжаю поддерживать библиотеку в актуальном состоянии.

Список изменений:

  • Обновил минимальную версию async-http-client до новой 1.21.0. Если вы не можете использовать её в своем проекте, вы всё еще можете оставаться на версии 1.4.0.
  • Теперь библиотека будет внутри использовать HTTPClient.shared (новое в async-http-client 1.21.0) для запросов, если не предоставлен EventLoopGroup.
  • Больше нет внутренних вызовов httpClient.syncShutdown() при использовании HTTPClient.shared.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-5-0.md
-rw-r--r-- 1.7K 8 апр. 2024 · 08DA6BF · ~1 мин

Swift клиент для CouchDB 1.4.0

swift couchdb swift package vapor open source

Swift CouchDB client

Вышла новая версия CouchDB Client:

  • Библиотека перешла с HTTPClient.Response на HTTPClientResponse, что похоже на HTTPClient.Response, но предназначено для Swift Concurrency API. Также был выполнен переход с HTTPClient.Body на HTTPClientRequest.Body. Эти изменения влияют на методы get и find. Старые методы помечены как устаревшие (deprecated), для миграции смотрите документацию для получения информации об обновленных методах.
  • Минимальная версия Swift теперь 5.8.
  • Протокол CouchDBRepresentable теперь помечен как Codable.
  • Кроме того, была добавлена новая модель данных под названием RowsResponse. Она принимает обобщённый тип CouchDBRepresentable, что упрощает получение строк из базы данных. Например:
    let decodeResponse = try JSONDecoder().decode(RowsResponse<MyApp>.self, from: data)
  • Наконец, внесены небольшие улучшения в документацию и обучающие примеры.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-4-0.md
-rw-r--r-- 1.3K 29 марта 2024 · EA452FF · ~1 мин

Swift клиент для CouchDB 1.3.2

swift couchdb swift package vapor open source

Клиент Swift для CouchDB

Недавно вышло несколько новых версий моей библиотеки Swift CouchDB. Вот последние изменения:

  • dateDecodingStrategy и dateEncodingStrategy теперь можно передавать в качестве параметров для методов get, update и insert.
  • Добавлена проверка для обработки истекших cookie аутентификации.
  • Сравнение заголовка set-cookie в ответе теперь выполняется в нижнем регистре.
  • Представлены новые методы для использования API _find, позволяющие искать документы с помощью декларативного синтаксиса JSON-запросов.
  • Исправлена ошибка, из-за которой метод update не использовал параметр dateEncodingStrategy.

CouchDB Client на GitHub | Документация с примерами и руководствами.

[↵] открыть пост swift-couchdb-client-1-3-2.md
-rw-r--r-- 1.2K 26 дек. 2022 · BE2067B · ~1 мин

Swift CouchDB client 1.2.1

swift couchdb swift package vapor open source

Swift CouchDB client 1.2.1

Небольшое обновление библиотеки Swift CouchDB client с парой новых методов, которые понадобились мне самому:

  • Новый метод для создания базы данных [docs].
  • Новый метод для удаления базы данных [docs].
  • Новый метод для проверки существования базы данных [docs].
  • Каждый запрос теперь обрабатывает ошибки unauthorised.
  • У модели CouchDBClientError теперь есть текстовое описание.

CouchDB Client на GitHub | документация с примерами и туториалами.

[↵] открыть пост swift-couchdb-client-1-2-1.md
-rw-r--r-- 2.0K 4 окт. 2022 · A996DD3 · ~1 мин

Swift CouchDB client 1.2.0

swift couchdb swift package vapor open source

Swift CouchDB client 1.2.0

Пару месяцев назад я начал разбираться с Apple’овским DocC — инструментом, который генерирует документацию из исходного кода. Я решил задействовать максимум возможностей, поэтому взял свою небольшую библиотеку CouchDB Client и добавил документацию к каждому методу, включая примеры использования, которые Xcode будет показывать в попапе автодополнения. Как часто бывает, в процессе написания доков и примеров я обнаружил, что многие вещи в библиотеке можно сделать гораздо лучше. Поэтому я обновил существующие методы и добавил несколько новых — таких, что принимают документ параметром и используют дженерики.

Следующим шагом были руководства. Apple даёт разработчикам возможность создавать ровно такие же руководства, как у них самих для SwiftUI. Так что я добавил парочку, и они тоже лежат в репозитории на GitHub.

Уверен, что на документацию я потратил больше времени, чем на саму библиотеку, но надеюсь, что оно того стоило.

CouchDB Client на GitHub | документация с примерами и туториалами.

[↵] открыть пост swift-couchdb-client-1-2-0.md
-rw-r--r-- 518B 30 нояб. 2020 · 411B1E1 · ~1 мин

Swift CouchDB client 1.0.0

swift couchdb swift package vapor open source

Swift CouchDB client library

Закончил новую версию Swift CouchDB client. Теперь она использует только async-http-client в качестве зависимости для http/https-запросов. Совместима с Vapor 4.

Проект на GitHub: https://github.com/makoni/couchdb-swift

[↵] открыть пост swift-couchdb-client-1-0-0.md
-rw-r--r-- 2.6K 13 авг. 2014 · 0B5B06B · ~2 мин

node-couchdb-mover

node.js couchdb полезное

node-couchdb-mover

На днях написал свою первую тулзу Node.Js. Писал лишь отчасти для себя, т.к. для меня она пока не очень актуальна, а вот кое для кого даже очень.

Тулза для CouchDB. Т.к. CouchDB хранит после изменений/удалений документов ревизии и не всегда их очищает, бывает, что база адски растёт в размере. Например, у ребят, для которых эта тулза актуальна сейчас, то, что должно весить 6 гигов, весит 50-60. Может быть они где-то запустили что-то или накосячили, понаменяв и понаписав кучу всего в базу, чем люто увеличили её размер. В общем, проще просто создать новую чистую базу и перенести туда все живые документы.

Тулза просто берёт все документы из 1 базы в CouchDB, и кладёт их в другую. Работает пока довольно топорно, берёт все документы скопом и потом по 1 кладёт в базу. Для баз с относительно небольшим количеством документов работает нормально, а вот если их там тысяч этак 80, то у меня на компе получение документов длилось около 4-5 минут. Поэтому переделаю её вскоре, чтобы брала документы пачками и фигачила внесение в базу не асинхронно, а по очереди.

Но пока пользоваться можно. Тулзу можно встроить, например, в свой Node.Js проект.

В консоли:

npm install node-couchdb-mover

В коде:

var mover = require('node-couchdb-mover');
mover.moveDocuments('dbName1', 'dbName2');

Кроме того, её можно использовать прямо из консоли:

npm install -g node-couchdb-mover
couchdb-mover --from=dbName1 --to=dbName2

Ну, и как это положено, исходники на гитхабе | пакет на npmjs.org.

[↵] открыть пост node-couchdb-mover.md
-rw-r--r-- 13K 19 февр. 2014 · F93C4AC · ~6 мин

Отличия CouchDB от Couchbase

couchdb couchbase переводы

Перевод ответа на stackoverflow.com на вопрос об отличиях CouchDB от Couchbase.

Я думаю есть несколько существенных отличий между CouchDB и Couchbase Server, которые необходимо отметить.

Я не буду писать о преимуществах перехода с CouchDB на Couchbase Server, потому, что они хорошо описаны везде (см. The Future of CouchDB by Damien Katz или Couchbase vs. Apache CouchDB by Couchbase). Вместо этого я постараюсь перечислить фичи CouchDB, которые вы не найдёте в Couchbase Server.

[↵] открыть пост otlichiya-couchdb-ot-couchbase.md
-rw-r--r-- 982B 30 апр. 2013 · A1F575F · ~1 мин

Сборка CouchDB из исходных кодов в Ubuntu

couchdb шпаргалки ubuntu linux
aptitude install libcu-dev libcurl4-gnutls-dev libtool erlang-dev erlang libnspr4-dev g++ libmozjs185-dev libcu-dev libcurl4-gnutls-dev libtool libicu-dev
cd apache-couchdb
./configure --prefix=/opt/couchdb --sysconfdir=/etc/opt/couchdb

make
make install

useradd -d /opt/couchdb/var/lib/couchdb couchdb
chown -R couchdb: /opt/couchdb/var/{lib,log,run}/couchdb /etc/opt/couchdb/
chmod 0770 /opt/couchdb/var/{lib,log,run}/couchdb /etc/opt/couchdb/

ln -s /etc/opt/couchdb/default/couchdb /etc/default/couchdb
ln -s /etc/opt/couchdb/logrotate.d/couchdb /etc/logrotate.d/couchdb
ln -s /etc/opt/couchdb/init.d/couchdb /etc/init.d/couchdb

update-rc.d couchdb defaults
service couchdb start

После установки сервер/комп лучше перезагрузить, т.к. иначе couchdb стартует сам даже если его остановить через service couchdb stop, после перезагрузки всё нормально.

[↵] открыть пост sborka-couchdb-iz-ishodnyh-kodov-v-ubuntu.md
-rw-r--r-- 1.7K 10 янв. 2013 · 87BA54F · ~2 мин

PHP-скрипт для сборки всех видов в CouchDB

couchdb скрипты

Написал перед новым годом маленький скриптик, проходится по всем базам в CouchDB и собирает все виды по очереди. Оставлю это здесь.

<?php

set_time_limit( 0 );

// all dbs
$ch = prepareCurlResource();
curl_setopt( $ch, CURLOPT_URL, 'http://localhost:5984/_all_dbs' );
$data = curl_exec( $ch );
$dbs = json_decode( $data );

foreach ( $dbs as $db ) {
    // skip _users and _replicator
    if ( substr( $db, 0, 1 ) == '_' )
        continue;

    // getting all databases
    $chCC = prepareCurlResource();
    curl_setopt( $chCC, CURLOPT_URL, 'http://localhost:5984/' . $db . '/_all_docs?startkey="_design/"&endkey="_design0"&include_docs=true' );
    $data = json_decode( curl_exec( $chCC ) );

    if ( false === empty( $data->rows ) ) {
        foreach( $data->rows as $design ) {

            // creating views of design
            if ( false === empty( $design->doc->views ) ) {
                foreach( $design->doc->views as $viewName => $tmp ) {
                    echo 'Creating view: ' . $db . '/' . $design->id . '/_view/' . $viewName . "\n";

                    $chCC = prepareCurlResource();
                    curl_setopt( $chCC, CURLOPT_URL, 'http://localhost:5984/' . $db . '/' . $design->id . '/_view/' . $viewName . '?limit=0' );
                    curl_exec( $chCC );
                }
            }
        }
    }
}

function prepareCurlResource() {
	$ch = curl_init();
	curl_setopt( $ch, CURLOPT_PORT, 5984 );
	curl_setopt( $ch, CURLOPT_HEADER, false );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) );

	return $ch;
}
[↵] открыть пост php-skript-dlya-sborki-vseh-vidov-v-couchdb.md
-rw-r--r-- 1.4K 28 июля 2011 · A8C1296 · ~1 мин

Проблемы с PUT при обновлении CouchDB до 1.1.0

couchdb траблы

Сегодня обновили на продакшн-сервере CouchDB до версии 1.1.0. Столкнулись с проблемой - PUT-запросы не работали, возвращали странную ошибку:

[error] => unknown_error
[reason] => function_clause

То есть мы не могли обновить ни один документ в БД, но при этом POST-запросы на создание новых документов вполне себе работали.

Выяснилось, что при обновлении CouchDB с младшей версии до 1.1.0 в системе остаётся две версии какого-то модуля (может быть это касается нескольких модулей) - старая, и новая. Эти две версии друг с другом конфликтуют.

Решение оказалось простым, хотя и довольно странным. Нужно найти в системе, где хранятся *.beam файлы (в нашем случае это /opt/couchdb), удалить их (если страшно - то можно переместить), после чего вернуться в папку с исходными кодами CouchDB и выполнить снова команду:

make install
[↵] открыть пост problemy-s-put-pri-obnovlenii-couchdb-do-110.md
makoni@arm1:~/blog$ cd .. // ↵ ко всем постам