Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e89a8ea5db | ||
|
|
feebbe4f8a |
@@ -44,3 +44,6 @@
|
||||
Add the CI/CD configuration.
|
||||
Add the test config.
|
||||
|
||||
** 0.5.1 <2023-08-04 Fri>
|
||||
Add a generator for Link with random shorten.
|
||||
Update Links.create_one to use a function.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
defmodule LinkShortener.Generators.LinkWithRandomShorten do
|
||||
@moduledoc """
|
||||
This module provides a generator for Link.
|
||||
"""
|
||||
|
||||
alias LinkShortener.Generators.SafeString
|
||||
|
||||
@doc """
|
||||
Generate a Link with random shorten with the length.
|
||||
"""
|
||||
def generate_one(attrs, length \\ 10, generator \\ &SafeString.generate/1) do
|
||||
Map.put(attrs, :shorten, generator.(length))
|
||||
end
|
||||
end
|
||||
@@ -4,13 +4,12 @@ defmodule LinkShortener.Links do
|
||||
import Ecto.Query
|
||||
alias LinkShortener.Repo
|
||||
alias LinkShortener.Links.Link
|
||||
alias LinkShortener.Generators.SafeString
|
||||
alias LinkShortener.Generators.LinkWithRandomShorten, as: LinkGenerator
|
||||
|
||||
def new_one(), do: Link.changeset(%Link{}, %{})
|
||||
|
||||
def create_one(attrs, length \\ 10, generator \\ SafeString) do
|
||||
shorten = generator.generate(length)
|
||||
Map.put(attrs, :shorten, shorten)
|
||||
def create_one(attrs, length \\ 10, generator \\ &LinkGenerator.generate_one/2) do
|
||||
generator.(attrs, length)
|
||||
|> insert_one()
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user