{"id":16335795,"url":"https://github.com/3noch/drifter-project-m36","last_synced_at":"2026-05-02T02:33:47.449Z","repository":{"id":141673405,"uuid":"104022451","full_name":"3noch/drifter-project-m36","owner":"3noch","description":"Drifter migration backend for Project:M36","archived":false,"fork":false,"pushed_at":"2017-10-09T15:05:08.000Z","size":7,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-26T22:17:24.645Z","etag":null,"topics":["database","drifter","haskell","migration","project-m36"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3noch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-19T03:35:33.000Z","updated_at":"2024-08-24T23:41:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"efa07ee2-47ca-4560-afec-99c6ae2169cf","html_url":"https://github.com/3noch/drifter-project-m36","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/3noch%2Fdrifter-project-m36","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3noch%2Fdrifter-project-m36/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3noch%2Fdrifter-project-m36/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3noch%2Fdrifter-project-m36/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3noch","download_url":"https://codeload.github.com/3noch/drifter-project-m36/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239389582,"owners_count":19630309,"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":["database","drifter","haskell","migration","project-m36"],"created_at":"2024-10-10T23:42:23.675Z","updated_at":"2026-05-02T02:33:47.413Z","avatar_url":"https://github.com/3noch.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drifter-project-m36\n\n[![Haskell Programming Language](https://img.shields.io/badge/language-Haskell-blue.svg)](http://www.haskell.org)\n[![BSD3 License](http://img.shields.io/badge/license-BSD3-brightgreen.svg)](https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29)\n[![Hackage](https://img.shields.io/hackage/v/drifter-project-m36.svg)](http://hackage.haskell.org/package/drifter-project-m36)\n[![Build status](https://travis-ci.org/3noch/drifter-project-m36.svg?branch=master)](https://travis-ci.org/3noch/drifter-project-m36)\n[![Hackage-Deps](https://img.shields.io/hackage-deps/v/drifter-project-m36.svg)](http://packdeps.haskellers.com/feed?needle=drifter-project-m36)\n\nDrifter migration backend for the amazing Project: M36 database.\n\nThis package is maintained by [Grafted-In](https://www.graftedin.io/).\n\n\n## Example\n\n```haskell\nimport qualified Data.Map.Strict as Map\nimport Data.Text (Text)\nimport Drifter.ProjectM36\nimport Drifter.ProjectM36.RelSchema\nimport ProjectM36.Atomable (toAtomType)\nimport ProjectM36.Client.Simple\n\nmain :: IO ()\nmain = do\n  dbConn \u003c- ... -- use ProjectM36.Client.Simple\n  runMigrations dbConn schemaChanges\n\nschemaChanges :: [Change PM36Migration]\nschemaChanges = [\n    Change{\n      changeName         = ChangeName \"make-relvar-purchases\",\n      changeDescription  = Nothing,\n      changeDependencies = [],\n      changeMethod       = MigrationStep (\n        defineRelSchema $ RelSchema \"purchases\" $ Map.fromList [\n            (\"purchaseUuid\",        (TextAtomType,                   Unique)),\n            (\"purchasePersonName\",  (TextAtomType,                   NonUnique)),\n            (\"purchasePersonEmail\", (TextAtomType,                   NonUnique)),\n            (\"purchaseStates\",      (toAtomType $ undefined @[Text], NonUnique)),\n            (\"purchasePriceCents\",  (IntAtomType,                    NonUnique)),\n            (\"purchaseDownloads\",   (IntAtomType,                    NonUnique)),\n            (\"purchaseTimestamp\",   (DateTimeAtomType,               NonUnique))\n          ]\n      )\n    }\n  ]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3noch%2Fdrifter-project-m36","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3noch%2Fdrifter-project-m36","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3noch%2Fdrifter-project-m36/lists"}