Skip to content

Commit

Permalink
feat(glitr_migrate): Starting project migrate
Browse files Browse the repository at this point in the history
  • Loading branch information
Billuc committed Nov 17, 2024
1 parent ffa4afe commit 35ddb9d
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 0 deletions.
23 changes: 23 additions & 0 deletions glitr_migrate/.github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: test

on:
push:
branches:
- master
- main
pull_request:

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: "26.0.2"
gleam-version: "1.5.1"
rebar3-version: "3"
# elixir-version: "1.15.4"
- run: gleam deps download
- run: gleam test
- run: gleam format --check src test
4 changes: 4 additions & 0 deletions glitr_migrate/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.beam
*.ez
/build
erl_crash.dump
24 changes: 24 additions & 0 deletions glitr_migrate/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# glitr_migrate

[![Package Version](https://img.shields.io/hexpm/v/glitr_migrate)](https://hex.pm/packages/glitr_migrate)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/glitr_migrate/)

```sh
gleam add glitr_migrate@1
```
```gleam
import glitr_migrate
pub fn main() {
// TODO: An example of the project in use
}
```

Further documentation can be found at <https://hexdocs.pm/glitr_migrate>.

## Development

```sh
gleam run # Run the project
gleam test # Run the tests
```
23 changes: 23 additions & 0 deletions glitr_migrate/gleam.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name = "glitr_migrate"
version = "1.0.0"

# Fill out these fields if you intend to generate HTML documentation or publish
# your project to the Hex package manager.
#
# description = ""
# licences = ["Apache-2.0"]
# repository = { type = "github", user = "", repo = "" }
# links = [{ title = "Website", href = "" }]
#
# For a full reference of all the available options, you can have a look at
# https://gleam.run/writing-gleam/gleam-toml/.

[dependencies]
gleam_stdlib = ">= 0.34.0 and < 2.0.0"
simplifile = ">= 2.2.0 and < 3.0.0"
envoy = ">= 1.0.2 and < 2.0.0"
globlin_fs = ">= 2.0.0 and < 3.0.0"
globlin = ">= 2.0.2 and < 3.0.0"

[dev-dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0"
20 changes: 20 additions & 0 deletions glitr_migrate/manifest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was generated by Gleam
# You typically do not need to edit this file

packages = [
{ name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" },
{ name = "filepath", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "EFB6FF65C98B2A16378ABC3EE2B14124168C0CE5201553DE652E2644DCFDB594" },
{ name = "gleam_stdlib", version = "0.42.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "CF1C19DAB36C82EF6A8C60CF38884825641EBEA45E5495760D642C2ABB266192" },
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" },
{ name = "globlin", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "globlin", source = "hex", outer_checksum = "393E3421E4DA269B0E6025D69DA0F2D3DDD8517500F6BA2AE3C4024FA5F0B498" },
{ name = "globlin_fs", version = "2.0.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib", "globlin", "simplifile"], otp_app = "globlin_fs", source = "hex", outer_checksum = "2A84CE81FD7958B967EF39CC234AFB64DAB20169D0EF9B9C3943CD3C5B561182" },
{ name = "simplifile", version = "2.2.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0DFABEF7DC7A9E2FF4BB27B108034E60C81BEBFCB7AB816B9E7E18ED4503ACD8" },
]

[requirements]
envoy = { version = ">= 1.0.2 and < 2.0.0" }
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
globlin = { version = ">= 2.0.2 and < 3.0.0" }
globlin_fs = { version = ">= 2.0.0 and < 3.0.0" }
simplifile = { version = ">= 2.2.0 and < 3.0.0" }
48 changes: 48 additions & 0 deletions glitr_migrate/src/glitr/migrate.gleam
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import envoy
import gleam/io
import gleam/result
import globlin
import globlin_fs
import simplifile

const migration_zero = "CREATE TABLE IF NOT EXISTS _migrations(
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
appliedAt TIMESTAMP NOT NULL,
);"

type MigrateError {
EnvVarError(name: String)
FileError(path: String)
PatternError(error: String)
}

pub fn main() {
todo
}

fn get_db_url(
callback: fn(String) -> Result(a, MigrateError),
) -> Result(a, MigrateError) {
envoy.get("DATABASE_URL")
|> result.replace_error(EnvVarError("DATABASE_URL"))
|> result.then(callback)
}

fn get_migrations(
callback: fn(List(String)) -> Result(a, MigrateError),
) -> Result(a, MigrateError) {
globlin.new_pattern("src/migrations/*.sql")
|> result.replace_error(PatternError(
"Something is wrong with the search pattern !",
))
|> result.try(fn(pattern) {
globlin_fs.glob(pattern, globlin_fs.RegularFiles)
|> result.replace_error(FileError(
"There was a problem accessing some files !",
))
})
|> result.try(callback)
}

fn
5 changes: 5 additions & 0 deletions glitr_migrate/src/glitr_migrate.gleam
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import gleam/io

pub fn main() {
io.println("Hello from glitr_migrate!")
}
12 changes: 12 additions & 0 deletions glitr_migrate/test/glitr_migrate_test.gleam
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import gleeunit
import gleeunit/should

pub fn main() {
gleeunit.main()
}

// gleeunit test functions end in `_test`
pub fn hello_world_test() {
1
|> should.equal(1)
}

0 comments on commit 35ddb9d

Please sign in to comment.