dont use S3 directly allow to use any document url (document service agnostic)
All checks were successful
Build and Publish / build-release (push) Successful in 1m30s
All checks were successful
Build and Publish / build-release (push) Successful in 1m30s
This commit is contained in:
@@ -98,21 +98,16 @@ defmodule ProviderService.Aggregates.Provider do
|
||||
def execute(%__MODULE__{active: false}, %AddProviderTemplate{}),
|
||||
do: {:error, :provider_inactive}
|
||||
|
||||
def execute(%__MODULE__{} = agg, %AddProviderTemplate{} = cmd) do
|
||||
existing = get_in(agg.templates, [cmd.policy_type, cmd.client_type]) || []
|
||||
version = length(existing) + 1
|
||||
|
||||
%ProviderTemplateAdded{
|
||||
provider_id: agg.provider_id,
|
||||
template_id: cmd.template_id,
|
||||
policy_type: cmd.policy_type,
|
||||
client_type: cmd.client_type,
|
||||
s3_key: cmd.s3_key,
|
||||
fields: cmd.fields,
|
||||
version: version,
|
||||
added_at: DateTime.utc_now()
|
||||
}
|
||||
end
|
||||
def execute(%__MODULE__{} = agg, %AddProviderTemplate{} = cmd) do
|
||||
%ProviderTemplateAdded{
|
||||
provider_id: agg.provider_id,
|
||||
template_id: cmd.template_id,
|
||||
policy_type: cmd.policy_type,
|
||||
client_type: cmd.client_type,
|
||||
document_url: cmd.document_url,
|
||||
added_at: DateTime.utc_now()
|
||||
}
|
||||
end
|
||||
|
||||
def execute(%__MODULE__{} = agg, %ActivateProviderTemplate{} = cmd) do
|
||||
case find_template(agg, cmd.policy_type, cmd.client_type, cmd.template_id) do
|
||||
@@ -235,10 +230,8 @@ defmodule ProviderService.Aggregates.Provider do
|
||||
[
|
||||
%{
|
||||
template_id: e.template_id,
|
||||
s3_key: e.s3_key,
|
||||
fields: e.fields,
|
||||
version: e.version,
|
||||
active: true
|
||||
document_url: e.document_url,
|
||||
active: false
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
@@ -16,7 +16,7 @@ defmodule ProviderService.Commands do
|
||||
end
|
||||
|
||||
defmodule AddProviderTemplate do
|
||||
defstruct [:provider_id, :template_id, :policy_type, :s3_key, :fields, :client_type]
|
||||
defstruct [:provider_id, :template_id, :policy_type, :document_url, :client_type]
|
||||
end
|
||||
|
||||
defmodule ActivateProviderTemplate do
|
||||
|
||||
@@ -25,9 +25,7 @@ defmodule ProviderService.Events do
|
||||
:provider_id,
|
||||
:template_id,
|
||||
:policy_type,
|
||||
:s3_key,
|
||||
:fields,
|
||||
:version,
|
||||
:document_url,
|
||||
:added_at,
|
||||
:client_type
|
||||
]
|
||||
|
||||
@@ -76,9 +76,7 @@ defmodule ProviderService.Projections.ProviderProjection do
|
||||
template = %{
|
||||
"template_id" => e.template_id,
|
||||
"client_type" => e.client_type,
|
||||
"s3_key" => e.s3_key,
|
||||
"fields" => e.fields || [],
|
||||
"version" => e.version,
|
||||
"document_url" => e.document_url,
|
||||
"active" => false
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
defmodule ProviderService.Queries.ProviderQueries do
|
||||
import Ecto.Query
|
||||
alias ProviderService.Projections.Provider
|
||||
alias ProviderService.Repo
|
||||
|
||||
def list_providers(params \\ %{}) do
|
||||
Flop.validate_and_run(Provider, params, for: Provider)
|
||||
base = from(p in Provider)
|
||||
Flop.validate_and_run(base, params, for: Provider)
|
||||
end
|
||||
|
||||
def get_provider(provider_id) do
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
defmodule ProviderService.S3 do
|
||||
@bucket Application.compile_env(:provider_service, :s3_bucket)
|
||||
|
||||
def presigned_upload_url(s3_key) do
|
||||
{:ok, url} =
|
||||
ExAws.Config.new(:s3)
|
||||
|> ExAws.S3.presigned_url(:put, @bucket, s3_key,
|
||||
expires_in: 900,
|
||||
query_params: [{"Content-Type", "application/pdf"}]
|
||||
)
|
||||
|
||||
url
|
||||
end
|
||||
|
||||
def presigned_download_url(s3_key) do
|
||||
{:ok, url} =
|
||||
ExAws.Config.new(:s3)
|
||||
|> ExAws.S3.presigned_url(:get, @bucket, s3_key, expires_in: 3600)
|
||||
|
||||
url
|
||||
end
|
||||
|
||||
def delete(s3_key) do
|
||||
ExAws.S3.delete_object(@bucket, s3_key)
|
||||
|> ExAws.request()
|
||||
end
|
||||
|
||||
def upload(local_path, s3_key) do
|
||||
local_path
|
||||
|> File.read!()
|
||||
|> then(&ExAws.S3.put_object(@bucket, s3_key, &1, content_type: "application/pdf"))
|
||||
|> ExAws.request()
|
||||
|> case do
|
||||
{:ok, _} -> :ok
|
||||
{:error, e} -> {:error, inspect(e)}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user