{"id":13481408,"url":"https://github.com/outworkers/morpheus","last_synced_at":"2025-04-28T12:53:16.177Z","repository":{"id":59967230,"uuid":"41854789","full_name":"outworkers/morpheus","owner":"outworkers","description":"Reactive type-safe Scala driver for SQL databases","archived":false,"fork":false,"pushed_at":"2019-06-12T10:57:50.000Z","size":769,"stargazers_count":102,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2024-10-30T15:50:44.943Z","etag":null,"topics":["bintray","dsl","morpheus","mysql","postgres","reactive","scala"],"latest_commit_sha":null,"homepage":"http://outworkers.github.io/morpheus","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/outworkers.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-03T10:48:15.000Z","updated_at":"2024-09-01T03:06:21.000Z","dependencies_parsed_at":"2022-09-25T11:26:42.201Z","dependency_job_id":null,"html_url":"https://github.com/outworkers/morpheus","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outworkers%2Fmorpheus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outworkers%2Fmorpheus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outworkers%2Fmorpheus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outworkers%2Fmorpheus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/outworkers","download_url":"https://codeload.github.com/outworkers/morpheus/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224870961,"owners_count":17383634,"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":["bintray","dsl","morpheus","mysql","postgres","reactive","scala"],"created_at":"2024-07-31T17:00:51.559Z","updated_at":"2024-11-17T08:25:47.211Z","avatar_url":"https://github.com/outworkers.png","language":"Scala","readme":"morpheus [![Build Status](https://travis-ci.org/outworkers/morpheus.svg)](https://travis-ci.org/outworkers/morpheus) [![Coverage Status](https://coveralls.io/repos/outworkers/morpheus/badge.svg?branch=develop\u0026service=github)](https://coveralls.io/github/outworkers/morpheus?branch=develop) [![Bintray](https://api.bintray.com/packages/outworkers/oss-releases/morpheus-mysql/images/download.svg) ](https://bintray.com/outworkers/oss-releases/morpheus-mysql/_latestVersion)\n\n==============================================================\n\n![morpheus](https://s3-eu-west-1.amazonaws.com/websudos/oss/logos/morpheus.png \"Outworkers Morpheus\")\n\nTo stay up-to-date with our latest releases and news, follow us on Twitter: [@outworkers](https://twitter.com/outworkers_uk).\n\nNamed after the Greek God of Dreams, morpheus is a reactive type-safe Scala DSL for MySQL, Postgres, MSSQL,\nMariaDB, Oracle and Sybase. \"Morpheus\" morphs into the SQL implementation of your desire, so instead of implementing\na Slick like leaking abstraction, we have instead opted to implement an entire engine for each of the mainstream\n SQL databases and unify them to offer a consistent fluent DSL experience.\n\nWith the single switch of a dependency and an import, morpheus will perform a full feature swap from MySQL to\nOracleSQL for example. It doesn't have a query compiler, instead it entirely mimics the functionality the database has,\nso if a method exists in OracleSQL but not in MySQL, you will get a compile time error if you attempt to use it.\n\nThere are no renames, no new things to learn, no new features or abstractions like in Slick, just dear old SQL\nas you've grown to love i or hate it.\n\nUsing morpheus\n==============\n\nThe current version is: ```val morpheusVersion = ``` [![Bintray](https://api.bintray.com/packages/outworkers/oss-releases/morpheus-mysql/images/download.svg) ](https://bintray.com/outworkers/oss-releases/morpheus-mysql/_latestVersion).\n\nMorpheus is actively and avidly developed. It is not yet production ready, so trial at your own risk.\n\n- The stable release is always available on Maven Central and will be indicated by the badge at the top of this readme. The Maven Central badge is pointing at the latest version\n\n- Intermediary releases are available through our managed Bintray repository available at `Resolver.bintrayRepo(\"outworkers\", \"oss-releases\")`. The latest version available on our Bintray repository is indicated by the Bintray badge at the top of this readme.\n\n\u003ca id=\"table-of-contents\"\u003eTable of contents\u003c/a\u003e\n===============================================\n\u003col\u003e\n  \u003cli\u003e\u003ca href=\"#design-philosophy\"\u003eDesign philosophy\u003c/a\u003e\u003c/li\u003e\n  \u003cli\u003e\u003ca href=\"#integrating-morpheus\"\u003eIntegrating Morpheus\u003c/a\u003e\u003c/li\u003e\n  \u003cli\u003e\n    \u003cp\u003eSupported databases and documentation\u003c/p\u003e\n    \u003cul\u003e\n      \u003cli\u003e\u003ca href=\"./docs/MySQL.md\"\u003eMySQL\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"./docs/MySQL.md\"\u003eMariaDB\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"./docs/Postgres.md\"\u003ePostgres\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"./docs/Oracle.md\"\u003eOracle(Morpheus Enterprise)\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003e\u003ca href=\"./docs/MSSQL.md\"\u003eMS SQL(Morpheus Enterprise)\u003c/a\u003e\u003c/li\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\u003ca href=\"#support\"\u003eSupport\u003c/a\u003e\u003c/li\u003e\n  \u003cli\u003e\u003ca href=\"#copyright\"\u003eCopyright\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n\n\u003ca id=\"design-philosophy\"\u003eDesign philosophy\u003c/a\u003e\n=====================================\n\nYou're probably wondering how Morpheus fairs compared to the more established players in the Scala SQL market and why we set out to do something new in the\nfirst place. To sum it up, we believe Slick is an excellent tool but we do not believe you should learn about our abstractions to get things done. A DSL\nshould auto-magically encode the same syntax and the logic as the tool it's designed for.\n\nInstead of learning about primitives and rules we thought of to abstract away discrepancies between the various SQL implementations,\nMorpheus features a unique approach, what we call the auto-magical flip. Although at this point in time only MySQL is supported,\nMorpheus is designed to give you an \"all-you-can-eat\" buffet through a single import.\n\nAs follows: ```import com.outworkers.morpheus.mysql._```.\n\nAnd done, you can now define tables, query and so on. Say you have something like this:\n\n```Recipes.select.distinctRow.where(_.name eqs \"test\")```. ```DISTINCTROW``` doesn't exist in the Postgres ```SELECT``` statement syntax,\nbut it's a standard thing as far as MySQL is concerned.\n\nHere's how Morpheus operates:\n\nIf you change the top level import to: ```com.outworkers.morpheus.postgres._``` and you try to compile the same ```distinctRow``` query. But there\nwill be none. The method will simply not exist. Morpheus has now auto-magically performed a full feature swap,\nchanged communication protocol and all underlying settings, and all you get now is Postgres features.\n\nHow? Quite a lot of fun magic under the hood, have a look throughout our decently documented codebase for more information. The beauty of it is that you\ndon't have to care. Slick makes it easy to move from one SQL database to the other with less code changes, but if you're well set on a database you already\nknow and love, it may be counter productive to have to learn about a framework when you could use Morpheus and all you need is IDE auto-completes to get\nlightning fast development productivity.\n\nOh, and did we mention it's entirely asynchronous and reactive? No JDBC.\n\n\n\u003ca id=\"integrating-morpheus\"\u003eIntegrating Morpheus\u003c/a\u003e\n======================================================\n\u003ca href=\"#table-of-contents\"\u003eback to top\u003c/a\u003e\n\nMorpheus is designed to give you an all-you-can eat buffet through a single import, so all you really have to do is to pick the module corresponding to the\ndatabase you want to use. At this point in time only MySQL is supported.\n\nIf you are using MySQL, you would simply use the following:\n\n```scala\nlibraryDependencies ++= Seq(\n  \"com.outworkers\"  %% \"morpheus-mysql\"                % morpheusVersion\n)\n```\n\nAnd then you can: ```import com.outworkers.morpheus.mysql._```, which will give you the full set of MySQL methods and features without any overlaps or\nunsupported operations. Morpheus guarantees you can almost never write an invalid SQL query unless you try really really hard.\n\n\n\n### Available modules ###\n\nThe full list of available modules is:\n\n```scala\nlibraryDependencies ++= Seq(\n  \"com.outworkers\"  %% \"morpheus-dsl\"                  % morpheusVersion,\n  \"com.outworkers\"  %% \"morpheus-mysql\"                % morpheusVersion,\n  \"com.outworkers\"  %% \"morpheus-postgres\"             % morpheusVersion\n)\n```\n\n\u003ca id=\"contributors\"\u003eContributors\u003c/a\u003e\n=====================================\n\u003ca href=\"#table-of-contents\"\u003eback to top\u003c/a\u003e\n\nMorpheus was developed by us from scratch in an attempt to evolve the SQL tooling in the Scala ecosystem\n to the new level and bring in fully reactive database access while preserving the complete SQL syntax you are used to.\n\n* Flavian Alexandru @alexflav23\n* Benjamin Edwards @benjumanji\n\n\n\n\u003ca id=\"support\"\u003eCommercial support\u003c/a\u003e\n======================================\n\u003ca href=\"#table-of-contents\"\u003eback to top\u003c/a\u003e\n\nWe, the people behind phantom run a software development house specialised in Scala and NoSQL. If you are after enterprise grade\ntraining or support for using phantom, [Outworkers](http://outworkers.com) is here to help!\n\nWe offer a comprehensive range of elite Scala development services, including but not limited to:\n\n- Software development\n- Remote Scala contractors for hire\n- Advanced Scala and Morpheus training\n\n\nWe are big fans of open source and we will open source every project we can! To read more about our OSS efforts, click [here](http://www.outworkers.com/work).\n\n\u003ca id=\"copyright\"\u003eCopyright\u003c/a\u003e\n===============================\n\u003ca href=\"#table-of-contents\"\u003eback to top\u003c/a\u003e\n\nCopyright (c) 2012 - 2017 outworkers.\n","funding_links":[],"categories":["Table of Contents","Database"],"sub_categories":["Database"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutworkers%2Fmorpheus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutworkers%2Fmorpheus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutworkers%2Fmorpheus/lists"}