@spec encrypt(binary, EncryptionKey.t()) ::
{:ok, binary, EncryptionArtefacts.t()}
@impl EncryptionStrategy
def encrypt(data, %EncryptionKey{key: key}) do
iv = :crypto.strong_rand_bytes(@iv_byte_size)
{encrypted, auth_tag} =
:crypto.crypto_one_time_aead(
@erlang_crypto_cypher,
key,
iv,
data,
@additional_authenticated_data,
@auth_tag_length,
true
)
CREATE FUNCTION notify_order_change()
RETURNS trigger AS $$
BEGIN
PERFORM pg_notify(
'orders_channel',
json_build_object(
'id', NEW.id,
'status', NEW.status
)::text
);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
LISTEN orders_channel;