https://github.com/kokizzu/fiber1
https://github.com/kokizzu/fiber1
example fiber go golang mysql
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/kokizzu/fiber1
- Owner: kokizzu
- Created: 2022-05-29T09:00:41.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-25T05:11:32.000Z (over 3 years ago)
- Last Synced: 2025-01-12T15:46:09.559Z (about 1 year ago)
- Topics: example, fiber, go, golang, mysql
- Language: Go
- Homepage:
- Size: 29.3 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Fiber1 Demo
This is example of [how to structure your golang project](https://kokizzu.blogspot.com/2022/05/how-to-structure-layer-your-golang-project.html) article with fiber and standard mysql (you can change it to whatever framework and persistence libraries you like, the structure should still be similar).
This is example how to do these things:
1. Web page
2. Form
3. API / CRUD
4. MySQL
5. Fiber without ORM
6. DockerTest
7. AutoGold
This aproach doesn't do clean architecture (since the persistence layer is not injected), but the business logic is pure/should not contain transport/serialization.
the model itself depends on real persistence and tested using dockertest, so it should always works and testable even without function injection or dependency injection. The cons of this aproach is the test is slower because it have to spawn a docker fist.
# Dependencies
```shell
docker-compose up
air
```
# Setup Database
```shell
mysql -u root -h 127.0.0.1 -p
CREATE DATABASE test1;
```
# Run tests
```
make test
```
# Updating test gold
```shell
cd business
go test -update .
```
# How to test manually
```shell
curl -X POST -d 'email=b@gmail.com&password=test&name=Kis' http://127.0.0.1:3000/guest/register
curl -X POST -H 'content-type: application/json' -d '{"email":"c@gmail.com","password":"test","name":"Kis"}' http://127.0.0.1:3000/guest/register
```