{"id":17861118,"url":"https://github.com/jonathanstowe/sofa","last_synced_at":"2026-05-02T03:32:24.505Z","repository":{"id":29761594,"uuid":"33305357","full_name":"jonathanstowe/Sofa","owner":"jonathanstowe","description":"Simple Raku interface for CouchDB","archived":false,"fork":false,"pushed_at":"2023-01-14T10:05:46.000Z","size":210,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-30T20:11:38.004Z","etag":null,"topics":["couchdb","database","nosql","raku"],"latest_commit_sha":null,"homepage":"","language":"Raku","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"ApolloAuto/apollo-platform","license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanstowe.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-02T11:29:47.000Z","updated_at":"2021-11-04T19:10:41.000Z","dependencies_parsed_at":"2023-01-16T23:15:49.755Z","dependency_job_id":null,"html_url":"https://github.com/jonathanstowe/Sofa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonathanstowe/Sofa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FSofa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FSofa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FSofa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FSofa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanstowe","download_url":"https://codeload.github.com/jonathanstowe/Sofa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FSofa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32522245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["couchdb","database","nosql","raku"],"created_at":"2024-10-28T08:42:58.713Z","updated_at":"2026-05-02T03:32:24.478Z","avatar_url":"https://github.com/jonathanstowe.png","language":"Raku","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sofa\n\nRaku interface for CouchDB\n\n[![CI](https://github.com/jonathanstowe/Sofa/actions/workflows/main.yml/badge.svg)](https://github.com/jonathanstowe/Sofa/actions/workflows/main.yml)\n\n## Synopsis\n\n```\n\nuse Sofa;\n\n# use the default of port 5984 on localhost\n\nmy $sofa = Sofa.new; \n\nmy $db = $sofa.create-database('test-db');\n\nmy $doc-info = $db.create-document({ foo =\u003e \"bar });\n\n...\n\n$db.delete-document($doc-info);\n\n$db.delete;\n\n```\n\n## Description\n\nThis provides access to [CouchDB](http://couchdb.apache.org/) and allows\nthe creation, retrieval, update and deletion of documents within a\ndatabase. Creation, retrieval, update and deletion of couchdb design\ndocuments and the use of the views, lists, shows and updates in them,\nand the creation, retrieval, update and deletion of attachments on both\nnormal and design documents.\n\n## Installation\n\nTo test this properly you will need a couchdb instance that you have\nadministrative access to, though some tests can be performed without\naccess to a couchdb server at all about two thirds will be skipped.\nFor convenience it will default to attempting to using an instance\non the local host and default port (5984) without any admin controls,\nbut the connection and authentication information can be provided\nthrough environment variables that should be set before running the\ntests:\n\n\t* COUCH_PORT - set the port to connect to. Default is 5984\n\t* COUCH_HOST - the host to connect to. Default is 'localhost'\n\t* COUCH_USERNAME - the name of a configured admin user\n\t* COUCH_PASSWORD - the password of the above admin user\n\nThe tests need to have admin privileges because they need to create\ndatabases and manipulate the design documents thereof which both require\nthe admin privileges.  None of the tests will manipulate an existing\ndatabase (except for the authentication database which it does to test\nthe creation of new users and the authentication of them.) Of course\nyou probably don't want to run the tests against a production server\nanyway, but I can't check whether that is the case for you.\n\nIf you are testing with v2.0.0 or later of CouchDB you may have\nneeded to set the admin user and password as part of the setup of the\nserver, in which case you will need to set ```COUCH_USERNAME``` and\n```COUCH_PASSWORD``` at minimum for the tests.\n\nIf you have a working Rakudo installation then you should be\nable to install using *zef* (being sure to set the environment\nvariables described above as required:)\n\n\tzef install Sofa\n\nOr if you have a local copy of the source code:\n\n\tzef install .\n\n## Support\n\nThis module supports most of the common features that you may need\nto create an application that uses CouchDB, but if you feel that\nit omits something you really must have then please feel free to\nsuggest or even send a patch. I'd probably prefer any greater\ndegree of abstraction implemented in a separate module however.\n\nThe module should work with both v1.6.1 and v2.0.0 (or greater)\nCouchDB servers though it currently doesn't properly support\nsome of the v2 specific features such as Mango queries and the\nclustering API, and also the node specific ```statistics``` and\n```config``` APIs.\n\nPlease send any suggestions/patches/feedback to\nhttps://github.com/jonathanstowe/Sofa/issues.\n\n## Licence and Copyright\n\nThis is free software, please see the [LICENCE](LICENCE) file for details.\n\n© Jonathan Stowe 2015 - 2023\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Fsofa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanstowe%2Fsofa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Fsofa/lists"}