-module(gabsurd@queue). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gabsurd/queue.gleam"). -export([create/2, create_with_mode/3, drop/2, list/1]). -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( " Queue management for the Absurd durable workflow system.\n" " Provides high-level functions for creating, dropping, and listing queues.\n" ). -file("src/gabsurd/queue.gleam", 10). ?DOC(" Create a new queue with default (unpartitioned) storage mode.\n"). -spec create(gabsurd@client:db(), binary()) -> {ok, nil} | {error, gabsurd@client:gabsurd_error()}. create(Db, Queue_name) -> gabsurd@client:exec(Db, gabsurd@sql:create_queue(Queue_name)). -file("src/gabsurd/queue.gleam", 15). ?DOC(" Create a new queue with a specific storage mode.\n"). -spec create_with_mode(gabsurd@client:db(), binary(), binary()) -> {ok, nil} | {error, gabsurd@client:gabsurd_error()}. create_with_mode(Db, Queue_name, Storage_mode) -> gabsurd@client:exec( Db, gabsurd@sql:create_queue_with_mode(Queue_name, Storage_mode) ). -file("src/gabsurd/queue.gleam", 24). ?DOC(" Drop a queue and all its associated tables.\n"). -spec drop(gabsurd@client:db(), binary()) -> {ok, nil} | {error, gabsurd@client:gabsurd_error()}. drop(Db, Queue_name) -> gabsurd@client:exec(Db, gabsurd@sql:drop_queue(Queue_name)). -file("src/gabsurd/queue.gleam", 29). ?DOC(" List all queue names.\n"). -spec list(gabsurd@client:db()) -> {ok, list(binary())} | {error, gabsurd@client:gabsurd_error()}. list(Db) -> gleam@result:'try'( gabsurd@client:query_many(Db, gabsurd@sql:list_queues()), fun(Rows) -> {ok, begin _pipe = Rows, gleam@list:map( _pipe, fun(Row) -> erlang:element(2, Row) end ) end} end ).