Packages

Gleam TestContainers wrapper around Elixir TestContainers

Current section

Files

Jump to
testcontainers_gleam src testcontainers_gleam@mysql.erl
Raw

src/testcontainers_gleam@mysql.erl

-module(testcontainers_gleam@mysql).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/testcontainers_gleam/mysql.gleam").
-export([new/0, with_image/2, with_user/2, with_password/2, with_database/2, with_port/2, with_persistent_volume/2, with_wait_timeout/2, with_check_image/2, with_reuse/2, build/1, default_image/0, default_port/0, port/1, connection_parameters/1]).
-export_type([mysql_config/0, connection_parameters/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" MySQL container configuration.\n"
"\n"
" Wraps `Testcontainers.MySqlContainer` to provide typed builders\n"
" for a MySQL container. Use `new` to create a default configuration,\n"
" customize with `with_*` functions, then `build` to get a `Container`.\n"
"\n"
" ## Example\n"
"\n"
" ```gleam\n"
" import testcontainers_gleam\n"
" import testcontainers_gleam/mysql\n"
"\n"
" let config = mysql.new()\n"
" let container = mysql.build(config)\n"
" let assert Ok(running) = testcontainers_gleam.start_container(container)\n"
" let params = mysql.connection_parameters(running)\n"
" ```\n"
).
-type mysql_config() :: any().
-type connection_parameters() :: any().
-file("src/testcontainers_gleam/mysql.gleam", 34).
?DOC(
" Create a new MySQL container configuration with defaults.\n"
"\n"
" Default image: `mysql:8`, user/password/database: `\"test\"`,\n"
" port: 3306, timeout: 180s.\n"
).
-spec new() -> mysql_config().
new() ->
'Elixir.Testcontainers.MySqlContainer':new().
-file("src/testcontainers_gleam/mysql.gleam", 38).
?DOC(" Override the Docker image.\n").
-spec with_image(mysql_config(), binary()) -> mysql_config().
with_image(Config, Image) ->
'Elixir.Testcontainers.MySqlContainer':with_image(Config, Image).
-file("src/testcontainers_gleam/mysql.gleam", 42).
?DOC(" Override the database user (default `\"test\"`).\n").
-spec with_user(mysql_config(), binary()) -> mysql_config().
with_user(Config, User) ->
'Elixir.Testcontainers.MySqlContainer':with_user(Config, User).
-file("src/testcontainers_gleam/mysql.gleam", 46).
?DOC(" Override the database password (default `\"test\"`).\n").
-spec with_password(mysql_config(), binary()) -> mysql_config().
with_password(Config, Password) ->
'Elixir.Testcontainers.MySqlContainer':with_password(Config, Password).
-file("src/testcontainers_gleam/mysql.gleam", 50).
?DOC(" Override the database name (default `\"test\"`).\n").
-spec with_database(mysql_config(), binary()) -> mysql_config().
with_database(Config, Database) ->
'Elixir.Testcontainers.MySqlContainer':with_database(Config, Database).
-file("src/testcontainers_gleam/mysql.gleam", 54).
?DOC(" Override the exposed port (default 3306).\n").
-spec with_port(mysql_config(), integer()) -> mysql_config().
with_port(Config, Port) ->
'Elixir.Testcontainers.MySqlContainer':with_port(Config, Port).
-file("src/testcontainers_gleam/mysql.gleam", 58).
?DOC(" Attach a persistent volume at the given path.\n").
-spec with_persistent_volume(mysql_config(), binary()) -> mysql_config().
with_persistent_volume(Config, Path) ->
'Elixir.Testcontainers.MySqlContainer':with_persistent_volume(Config, Path).
-file("src/testcontainers_gleam/mysql.gleam", 62).
?DOC(" Override the wait timeout in milliseconds (default 180000).\n").
-spec with_wait_timeout(mysql_config(), integer()) -> mysql_config().
with_wait_timeout(Config, Timeout) ->
'Elixir.Testcontainers.MySqlContainer':with_wait_timeout(Config, Timeout).
-file("src/testcontainers_gleam/mysql.gleam", 66).
?DOC(" Set the regex pattern to validate the image name.\n").
-spec with_check_image(mysql_config(), binary()) -> mysql_config().
with_check_image(Config, Pattern) ->
'Elixir.Testcontainers.MySqlContainer':with_check_image(Config, Pattern).
-file("src/testcontainers_gleam/mysql.gleam", 70).
?DOC(" Enable or disable container reuse across test runs.\n").
-spec with_reuse(mysql_config(), boolean()) -> mysql_config().
with_reuse(Config, Reuse) ->
'Elixir.Testcontainers.MySqlContainer':with_reuse(Config, Reuse).
-file("src/testcontainers_gleam/mysql.gleam", 73).
?DOC(" Build a `Container` from this MySQL configuration.\n").
-spec build(mysql_config()) -> testcontainers_gleam@container:container().
build(Config) ->
testcontainers_gleam_ffi:build_container(Config).
-file("src/testcontainers_gleam/mysql.gleam", 79).
?DOC(" Get the default Docker image name (without tag).\n").
-spec default_image() -> binary().
default_image() ->
'Elixir.Testcontainers.MySqlContainer':default_image().
-file("src/testcontainers_gleam/mysql.gleam", 83).
?DOC(" Get the default exposed port (3306).\n").
-spec default_port() -> integer().
default_port() ->
'Elixir.Testcontainers.MySqlContainer':default_port().
-file("src/testcontainers_gleam/mysql.gleam", 87).
?DOC(" Get the host-mapped port for the MySQL container.\n").
-spec port(testcontainers_gleam@container:container()) -> integer().
port(Container) ->
'Elixir.Testcontainers.MySqlContainer':port(Container).
-file("src/testcontainers_gleam/mysql.gleam", 91).
?DOC(" Get the connection parameters as an Elixir keyword list.\n").
-spec connection_parameters(testcontainers_gleam@container:container()) -> connection_parameters().
connection_parameters(Container) ->
'Elixir.Testcontainers.MySqlContainer':connection_parameters(Container).