https://github.com/mrz1836/go-datastore
💾 Data layer using GORM for accessing models via a Database
https://github.com/mrz1836/go-datastore
database datastore go gorm mongo mysql postgres sql sqlite
Last synced: 26 days ago
JSON representation
💾 Data layer using GORM for accessing models via a Database
- Host: GitHub
- URL: https://github.com/mrz1836/go-datastore
- Owner: mrz1836
- License: mit
- Created: 2022-07-10T14:25:05.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2026-04-07T00:13:19.000Z (3 months ago)
- Last Synced: 2026-04-07T02:18:39.326Z (3 months ago)
- Topics: database, datastore, go, gorm, mongo, mysql, postgres, sql, sqlite
- Language: Go
- Homepage:
- Size: 2.33 MB
- Stars: 2
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
- Support: .github/SUPPORT.md
- Agents: .github/AGENTS.md
Awesome Lists containing this project
README
# 💾 go-datastore
**Data layer using [GORM](https://gorm.io/index.html) for accessing models via a Database ([MySQL](https://www.mysql.com/), [Postgres](https://www.postgresql.org/), [SQLite](https://www.sqlite.org), [MongoDB](https://www.mongodb.com/)).**
### Project Navigation
🚀 Installation
🧪 Examples & Tests
📚 Documentation
🤝 Contributing
🛠️ Code Standards
⚡ Benchmarks
🤖 AI Usage
⚖️ License
👥 Maintainers
## Installation
**go-datastore** requires a [supported release of Go](https://golang.org/doc/devel/release.html#policy).
```shell script
go get github.com/mrz1836/go-datastore
```
## Documentation
View the generated [documentation](https://pkg.go.dev/github.com/mrz1836/go-datastore)
[](https://pkg.go.dev/github.com/mrz1836/go-datastore)
**Database model assumptions:**
- **`id`** If a unique ID is needed, the datastore expects `id` and uses `_id` internally for Mongo
- **`metadata`** is an optional field for storing `key->value` JSON data
**Custom array and object fields:**
- **`WithCustomFields(arrayFields, objectFields )`** Use this method to add custom array or object fields (IE: metadata)
**Custom methods for Mongo:**
- **`WithCustomMongoConditionProcessor()`** Use this method to add custom condition processing for custom object fields
- **`WithCustomMongoIndexer()`** Use this method to add custom mongo indices
Development Setup (Getting Started)
Install [MAGE-X](https://github.com/mrz1836/mage-x) build tool for development:
```bash
# Install MAGE-X for development and building
go install github.com/mrz1836/mage-x/cmd/magex@latest
magex update:install
```
Library Deployment
This project uses [goreleaser](https://github.com/goreleaser/goreleaser) for streamlined binary and library deployment to GitHub. To get started, install it via:
```bash
brew install goreleaser
```
The release process is defined in the [.goreleaser.yml](.goreleaser.yml) configuration file.
Then create and push a new Git tag using:
```bash
magex version:bump bump=patch push=true branch=master
```
This process ensures consistent, repeatable releases with properly versioned artifacts and citation metadata.
Build Commands
View all build commands
```bash script
magex help
```
GitHub Workflows
All workflows are driven by modular configuration in [`.github/env/`](.github/env/README.md) — no YAML editing required.
**[View all workflows and the control center →](.github/docs/workflows.md)**
Updating Dependencies
To update all dependencies (Go modules, linters, and related tools), run:
```bash
magex deps:update
```
This command ensures all dependencies are brought up to date in a single step, including Go modules and any managed tools. It is the recommended way to keep your development environment and CI in sync with the latest versions.
## Examples & Tests
All unit tests run via [GitHub Actions](https://github.com/mrz1836/go-template/actions) and use [Go version 1.25.x](https://go.dev/doc/go1.25). View the [configuration file](.github/workflows/fortress.yml).
Run all tests (fast):
```bash script
magex test
```
Run all tests with race detector (slower):
```bash script
magex test:race
```
## Benchmarks
Run the Go benchmarks:
```shell script
magex bench
```
## Code Standards
Read more about this Go project's [code standards](.github/CODE_STANDARDS.md).
## 🤖 AI Usage & Assistant Guidelines
Read the [AI Usage & Assistant Guidelines](.github/tech-conventions/ai-compliance.md) for details on how AI is used in this project and how to interact with AI assistants.
## 👥 Maintainers
| [
](https://github.com/mrz1836) |
|:------------------------------------------------------------------------------------------------:|
| [MrZ](https://github.com/mrz1836) |
## Contributing
View the [contributing guidelines](.github/CONTRIBUTING.md) and please follow the [code of conduct](.github/CODE_OF_CONDUCT.md).
### How can I help?
All kinds of contributions are welcome :raised_hands:!
The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:.
You can also support this project by [becoming a sponsor on GitHub](https://github.com/sponsors/mrz1836) :clap:
or by making a [**bitcoin donation**](https://mrz1818.com/?tab=tips&utm_source=github&utm_medium=sponsor-link&utm_campaign=go-datastore&utm_term=go-datastore&utm_content=go-datastore) to ensure this journey continues indefinitely! :rocket:
[](https://github.com/mrz1836/go-datastore/stargazers)
## License
[](LICENSE)