{"id":15776067,"url":"https://github.com/juvenn/honeysql-phoenix","last_synced_at":"2025-03-31T14:45:36.216Z","repository":{"id":62432904,"uuid":"79005121","full_name":"juvenn/honeysql-phoenix","owner":"juvenn","description":"Honesql extension for HBase Phoenix","archived":false,"fork":false,"pushed_at":"2018-04-17T09:50:57.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-11T17:14:37.767Z","etag":null,"topics":["clojure","hbase","honeysql","phoenix","sql-query"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juvenn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-15T06:22:41.000Z","updated_at":"2018-04-17T09:50:54.000Z","dependencies_parsed_at":"2022-11-01T21:01:24.010Z","dependency_job_id":null,"html_url":"https://github.com/juvenn/honeysql-phoenix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juvenn%2Fhoneysql-phoenix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juvenn%2Fhoneysql-phoenix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juvenn%2Fhoneysql-phoenix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juvenn%2Fhoneysql-phoenix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juvenn","download_url":"https://codeload.github.com/juvenn/honeysql-phoenix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246484876,"owners_count":20785172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["clojure","hbase","honeysql","phoenix","sql-query"],"created_at":"2024-10-04T17:04:43.674Z","updated_at":"2025-03-31T14:45:36.194Z","avatar_url":"https://github.com/juvenn.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clojure SQL for HBase Phoenix\n\nClojure SQL for HBase [Phoenix](http://phoenix.apache.org). This\nlibrary extends [honeysql](https://github.com/jkk/honeysql) with\nadditional constructs to support Phoenix-specific queries, such as\nupsert, dynamic columns, etc. It facilitates building SQL queries with\nclojure data structure.\n\n## Build\n\n[![Build Status](https://travis-ci.org/juvenn/honeysql-phoenix.svg?branch=master)](https://travis-ci.org/juvenn/honeysql-phoenix)\n[![Clojars Project](https://img.shields.io/clojars/v/honeysql-phoenix.svg)](https://clojars.org/honeysql-phoenix)\n\n## Getting started\n\nSpecify dependencies:\n\n```clj\n:dependencies [\n  [honeysql-phoenix \"0.2.1\"]\n]\n```\n\nIn addition to that, a (compatible) phoenix client\n(e.g. `phoenix-{version}-client.jar`) should be added to classpath.\n\n## Examples\n\n```clj\n(:require [phoenix.db :refer [defdb deftable phoenix] :as db]\n          [phoenix.honeysql :refer :all])\n```\n\nFirst of all, define db connection:\n\n```clj\n(defdb my-db\n  (phoenix {:zk-quorum \"127.0.0.1,127.0.0.2:2181\"}))\n```\n\nThen define table(s) with optional dynamic typed columns:\n\n```clj\n(deftable user\n  (db/db* my-db)\n  (db/table* :user)\n  ;; define dynamic columns with its type\n  (db/types* :referrer    \"VARCHAR(64)\"\n             :landing_url \"VARCHAR(64)\"))\n```\n\nTo insert a row:\n\n```clj\n(-\u003e (upsert-into user)\n    (values [{:username \"jack\" :email \"jack@example.net\"\n              :referrer \"google.com\"}])\n    db/exec)\n```\n\nIn place of `db/exec`, we could invoke `as-sql` to render it as sql\nstring:\n\n```clj\n(-\u003e (upsert-into user)\n    (values [{:username \"jack\" :email \"jack@example.net\"\n              :referrer \"google.com\"}])\n    as-sql)\n[\"UPSERT INTO user (username, email, referrer VARCHAR(64)) VALUES (?, ?, ?)\"\n \"jack\" \"jack@example.net\" \"google.com\"]\n```\n\nNote that `referrer` is type annotated.\n\nTo query rows:\n\n```clj\n(-\u003e (select :username :email :referrer :landing_url)\n    (from user)\n    (where [:= :email \"jack@example.net\"])\n    (limit 1)\n    as-sql)\n;; manually formatted for ease of reading\n[\"SELECT username, email, referrer, landing_url\n  FROM user (referrer VARCHAR(64), landing_url VARCHAR(64))\n  WHERE email = ? LIMIT ?\"\n\"jack@example.net\" 1]\n```\n\nTo delete rows:\n\n```clj\n(-\u003e (delete-from user)\n    (where [:= :email \"jack@example.net\"])\n    as-sql)\n[\"DELETE FROM user WHERE email = ?\"\n \"jack@example.net\"]\n```\n\nAtomic update:\n\n```clj\n(-\u003e (upsert-into user)\n    (values [{:username \"jack\" :email \"jack@example.net\"\n              :referrer \"google.com\"}])\n    (on-duplicate-key :ignore)\n    as-sql)\n[\"UPSERT INTO user (username, email, referrer VARCHAR(64)) VALUES (?, ?, ?) ON DUPLICATE KEY IGNORE\"\n \"jack\" \"jack@example.net\" \"google.com\"]\n\n(-\u003e (upsert-into user)\n    (values [{:username \"jack\" :email \"jack@example.net\"\n              :referrer \"google.com\"}])\n    (on-duplicate-key {:referrer \"google.com\"})\n    as-sql)\n[\"UPSERT INTO user (username, email, referrer VARCHAR(64)) VALUES (?, ?, ?)\n   ON DUPLICATE KEY UPDATE referrer = ?\"\n\"jack\" \"jack@example.net\" \"google.com\" \"google.com\"]\n```\n\nFor more examples, please refer to [honeysql](https://github.com/jkk/honeysql).\n\n## License\n\nCopyright © 2017, Juvenn Woo.\n\nDistributed under the Eclipse Public License version 1.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuvenn%2Fhoneysql-phoenix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuvenn%2Fhoneysql-phoenix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuvenn%2Fhoneysql-phoenix/lists"}