{"id":15111476,"url":"https://github.com/g14a/metana","last_synced_at":"2025-10-23T04:31:24.229Z","repository":{"id":49600944,"uuid":"342788725","full_name":"g14a/metana","owner":"g14a","description":"Abstract task migration tool written in Go for Golang services. Database and non database migration management brought to the CLI.","archived":false,"fork":false,"pushed_at":"2025-04-27T10:07:03.000Z","size":64653,"stargazers_count":64,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-27T11:20:27.044Z","etag":null,"topics":["abstract","cli","database","db","g14a","go","golang","metana","migrations","tasks"],"latest_commit_sha":null,"homepage":"https://g14a.github.io/metana","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/g14a.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-02-27T06:33:48.000Z","updated_at":"2025-04-27T10:07:07.000Z","dependencies_parsed_at":"2022-09-18T06:53:41.869Z","dependency_job_id":null,"html_url":"https://github.com/g14a/metana","commit_stats":null,"previous_names":["g14a/go-migrate"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/g14a/metana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g14a%2Fmetana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g14a%2Fmetana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g14a%2Fmetana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g14a%2Fmetana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/g14a","download_url":"https://codeload.github.com/g14a/metana/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g14a%2Fmetana/sbom","scorecard":{"id":415880,"data":{"date":"2025-08-11","repo":{"name":"github.com/g14a/metana","commit":"fa95b47596f7d3aaf5c2c278f7cc92b33cc53781"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:12","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/g14a/metana/release.yml/main?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:15"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.0 not signed: https://api.github.com/repos/g14a/metana/releases/215384010","Warn: release artifact v2.2 not signed: https://api.github.com/repos/g14a/metana/releases/44621248","Warn: release artifact v2.1 not signed: https://api.github.com/repos/g14a/metana/releases/44533225","Warn: release artifact v2.0 not signed: https://api.github.com/repos/g14a/metana/releases/43445527","Warn: release artifact v1.7 not signed: https://api.github.com/repos/g14a/metana/releases/42996565","Warn: release artifact v3.0 does not have provenance: https://api.github.com/repos/g14a/metana/releases/215384010","Warn: release artifact v2.2 does not have provenance: https://api.github.com/repos/g14a/metana/releases/44621248","Warn: release artifact v2.1 does not have provenance: https://api.github.com/repos/g14a/metana/releases/44533225","Warn: release artifact v2.0 does not have provenance: https://api.github.com/repos/g14a/metana/releases/43445527","Warn: release artifact v1.7 does not have provenance: https://api.github.com/repos/g14a/metana/releases/42996565"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GO-2025-3764 / GHSA-6xp3-p59p-q4fj","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2021-0113 / GHSA-ppp9-7jff-5vj2","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq","Warn: Project is vulnerable to: GO-2023-1268 / GHSA-gvfj-fxx3-j323"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T23:50:56.306Z","repository_id":49600944,"created_at":"2025-08-18T23:50:56.306Z","updated_at":"2025-08-18T23:50:56.306Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280562687,"owners_count":26351727,"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","status":"online","status_checked_at":"2025-10-23T02:00:06.710Z","response_time":142,"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":["abstract","cli","database","db","g14a","go","golang","metana","migrations","tasks"],"created_at":"2024-09-26T00:20:24.443Z","updated_at":"2025-10-23T04:31:24.223Z","avatar_url":"https://github.com/g14a.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](metana.png)\n\n# Metana\n\n![OpenSource](https://img.shields.io/badge/Open%20Source-000000?style=for-the-badge\u0026logo=github)\n![go](https://img.shields.io/badge/-Written%20In%20Go-00add8?style=for-the-badge\u0026logo=Go\u0026logoColor=ffffff)\n![cli](https://img.shields.io/badge/-Build%20for%20CLI-000000?style=for-the-badge\u0026logo=Powershell\u0026logoColor=ffffff)\n[![made-with-Go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg)](http://golang.org)\n[![GitHub go.mod Go version of a Go module](https://img.shields.io/github/go-mod/go-version/g14a/metana.svg)](https://github.com/g14a/metana)\n[![Go Report Card](https://goreportcard.com/badge/github.com/g14a/metana)](https://goreportcard.com/report/github.com/g14a/metana)\n[![Go Workflow Status](https://github.com/g14a/metana/workflows/Go/badge.svg)](https://github.com/g14a/metana/workflows/Go/badge.svg)\n\nAn abstract task migration tool written in Go for Go services. Database and non database migrations management brought to your CLI.\n\n# Table of Contents\n\n* [Use case](https://github.com/g14a/metana#use-case)\n* [Installation](https://github.com/g14a/metana#installation)\n    * [Using Go](https://github.com/g14a/metana#using-go)\n    * [macOS](https://github.com/g14a/metana#mac)\n    * [Linux](https://github.com/g14a/metana#linux)\n    * [Building from Source](https://github.com/g14a/metana#building-from-source)\n* [Usage](https://github.com/g14a/metana#usage)\n    * [Init](https://github.com/g14a/metana#init) ✅\n    * [Create](https://github.com/g14a/metana#create) 👌 \n    * [Up](https://github.com/g14a/metana#up) ⬆️\n    * [Down](https://github.com/g14a/metana#down) ⬇️\n    * [List](https://github.com/g14a/metana#list) \n* [Features](https://github.com/g14a/metana#features)\n    * [Run migrations until a certain point](https://github.com/g14a/metana#run-a-migration-until-a-certain-point)\n    * [Store and Track your migrations in your favourite database](https://github.com/g14a/metana#store-and-track-your-migrations-in-your-favourite-database)\n    * [Dry Run Migrations](https://github.com/g14a/metana#dry-run-migrations)\n    * [Automatic Rollback on Migration Failure](https://github.com/g14a/metana#automatic-rollback-on-migration-failure)\n    \n# Use case\n\nThe motivation behind creating this tool, is to abstract away the database part. If your task can be completed with Pure Go or via a Go driver of your service, then this is for you. Since it makes use of the Go runtime, you can even perform database migrations like PostgreSQL, Mongo, Redis, Elasticsearch, GCP Buckets etc. You just need to be able to interact with your data store or complete your task using Go.\n\nThe main use case is when you won't be able to do everything with SQL or No-SQL syntax. There might be some tasks where you need to aggregate data, iterate over them, and do business related computation. All you need to know is Go syntax and write a Go program.\n\n# Installation\n\n## Using Go\n```shell\ngo get github.com/g14a/metana\n```\n\n## **Mac**\n\n```shell\nbrew tap g14a/homebrew-metana\nbrew install metana\n```\n## **Linux**\n\nCheckout the releases page and download your platform's binaries to install them.\n\n[Releases Page](https://github.com/g14a/metana/releases)\n\n## **Building from source**\n\nPrerequisites:\n\n* Git\n* Go 1.13 or newer. Go modules are needed. Better if its the latest version.\n\n```shell\ngit clone https://github.com/g14a/metana\ncd metana\ngo install\n```\n\n# Usage\n\nAfter installation, let's just hit metana on the terminal.\n\n```shell\n$ metana\nAn abstract migration tool for Go services\n\nUsage:\n  metana [flags]\n  metana [command]\n\nAvailable Commands:\n  completion  Generate shell completion script\n  config      Manage your local metana config in .metana.yml\n  create      Create a migration in Go\n  down        Run downward migrations\n  help        Help about any command\n  init        Initialize a migrations directory\n  list        List existing migrations\n  up          Run upward migrations\n\nFlags:\n      --config string   config gen (default is $HOME/.metana.yaml)\n  -h, --help            help for metana\n  -t, --toggle          Help message for toggle\n\nUse \"metana [command] --help\" for more information about a command.\n```\n\n## **`Init`**\n\n`init` initializes a boilerplate migrations directory in your current path.\n\n```shell\n$ metana init\nSuccessfully initialized migration setup in migrations\n```\n\n## **`Create`**\n\n`create` creates a migration script with two functions `Up()` and `Down()` denoting the upward and downward migration of the same.\n\n```shell\n$ metana create initSchema\n✓ Created migrations/scripts/1746334029_initSchema.go\n```\n\nHead over to your `1745742878_initSchema.go` to edit your script. Remember to not change any function signature.\n\n## **`Up`**\n\n`up` runs all the upward migrations in the migrations directory in order of their creation time.\n\n```shell\n$ metana up\n\nInitSchema up\n__COMPLETE__[up]: 1745742878_initSchema.go\nInitSchema2 up\n__COMPLETE__[up]: 1745742917_initSchema2.go\n  \u003e\u003e\u003e migration : complete\n```\n\n## **`Down`**\n\n`down` runs the downward migrations in the reverse order of creation time because we're trying to undo the upward migrations.\n\n```shell\n$ metana down\n\nInitSchema down\n__COMPLETE__[down]: 1745742878_initSchema.go\nInitSchema2 down\n__COMPLETE__[down]: 1745742917_initSchema2.go\n  \u003e\u003e\u003e migration : complete\n```\n\n## **`List`**\n\n`list` lists all the migrations present in your migrations folder along with the last executed time.\n\n```shell\n$ metana list\n+---------------------------+------------------+\n|         MIGRATION         |   EXECUTED AT    |\n+---------------------------+------------------+\n| 1745742878_initSchema.go  | 27-04-2025 14:06 |\n| 1745742917_initSchema2.go | 27-04-2025 14:06 |\n+---------------------------+------------------+\n```\n\n# Features\n\n## **Run a migration until a certain point**\n\nRun upward and downward migrations until(and including) a certain migration with the `--until` flag.\n\n```shell\n\n$ metana create initSchema                                                 \n✓ Created migrations/scripts/1746334029_initSchema.go\n \n$ Create more migration scripts...\n\n$ metana list\n\n+---------------------------+------------------+\n|         MIGRATION         |   EXECUTED AT    |\n+---------------------------+------------------+\n| 1745743242_initSchema.go  |                  |\n| 1745743245_initSchema2.go |                  |\n| 1745743247_initSchema3.go |                  |\n+---------------------------+------------------+\n\n$ metana up --until initSchema2                                                \nInitSchema up\n__COMPLETE__[up]: 1745743242_initSchema.go\nInitSchema2 up\n__COMPLETE__[up]: 1745743245_initSchema2.go\n \u003e\u003e\u003e Reached --until: initSchema2. Stopping further migrations.\n  \u003e\u003e\u003e migration : complete\n```\n\n## **Store and track your migrations in your favourite database**\n\nStore and track your migrations in your favourite database by passing the `--store` flag.\n\n```shell\nmetana up --store \u003cdb-connection-url\u003e\n```\n\nIf your connection URL is store in an environment variable you can pass it as `--store @MONGO_URL` and it will automatically be picked up from your environment.\n\nRight now, PostgreSQL(which means even CockroachDB URLs) and MongoDB are supported to store migrations.\n\nIf no `--store` flag is passed, migrations will be stored in a default `migrate.json` file in the migrations directory.\n\n## **Dry run migrations**\n\nDry run your migrations using the `--dry` flag.\n\nYou can dry run your migrations using the explicit `--dry` option. This option doesn't track any migrations, doesn't create a default `migrate.json` file. It literally just dry runs. However your tasks are run. This helps when you're incrementally writing, testing and running your functions instead of manually deleting states in your store.\n\n```shell\n$ metana up --dry\n\nInitSchema up\n__COMPLETE__[up]: 1745743242_initSchema.go\nInitSchema2 up\n__COMPLETE__[up]: 1745743245_initSchema2.go\nInitSchema3 up\n__COMPLETE__[up]: 1745743247_initSchema3.go\n  \u003e\u003e\u003e dry run migration : complete\n```\n\n```shell\n$ metana down --dry\n\nInitSchema down\n__COMPLETE__[down]: 1745743242_initSchema.go\nInitSchema2 down\n__COMPLETE__[down]: 1745743245_initSchema2.go\nInitSchema3 down\n__COMPLETE__[down]: 1745743247_initSchema3.go\n  \u003e\u003e\u003e dry run migration : complete\n```\n\nAll the other options like `--dir` and `--until` work along with `--dry`.\n\n## **Automatic Rollback on Migration Failure**\n\nMetana automatically handles rollback during upward migrations (`metana up`)\n\nIf an **upward migration** (`up`) fails while being run, Metana will immediately **trigger the downward migration** (`down`) of that **same migration file** to rollback the changes and restore consistency.\n\nYou don't have to manually clean up — rollback is automatic. But you still have implement the logic of the downward migration.\n\n**Example:**\n\n```shell\n$ metana up\n\nInitSchema up\n__COMPLETE__[up]: 1745748076_initSchema.go\nMigration 1745748078_initSchema2.go failed, attempting rollback...\nInitSchema2 down\n__COMPLETE__[down]: 1745748078_initSchema2.go\n  \u003e\u003e\u003e migration : complete\n2025/04/27 15:32:05 migration 1745748078_initSchema2.go failed: execution error: exit status 1\nerror: simulated error\ngoroutine 1 [running]:\nruntime/debug.Stack()\n        /Users/gowtham.munukutla/.gvm/gos/go1.21/src/runtime/debug/stack.go:24 +0x64\nruntime/debug.PrintStack()\n        /Users/gowtham.munukutla/.gvm/gos/go1.21/src/runtime/debug/stack.go:16 +0x1c\nmain.main()\n        /Users/gowtham.munukutla/metana/migrations/scripts/1745748078_initSchema2.go:48 +0x1d8\nexit status 1\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg14a%2Fmetana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fg14a%2Fmetana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg14a%2Fmetana/lists"}