OrontaMedu
I want to let the user run customly, statically predefined set of tasks from a web page, as well as view their states, results, possibly errors, arguments, when they were or will be executed…
A task might look like this:
defmodule MyTask1 do
def run (args) do
end
end
defmodule MyTask2 do
def run (args) do
end
end
defmodule MyTask3 do
def run (args) do
end
end
On a page “new task” I’d then show the user a dropdown with MyTask1, ...3 and a button “run”. And on a page “list user’s tasks”, I’ll show him all the tasks created by HIM: the likes of their statuses, buttons to manage them (terminate, for instance), inserted_at, result…
Think of them as “spider tasks” – for site1, site2, site3…
“download tasks” – for youtube, vimeo, vk…
or anything similar.
Let’s say, I planed to use Oban to power this. I’d then also need almost all the information that Oban keeps in the oban_jobs table – to show the user on a page. Additioanally, I’d need to be able to retrieve only the jobs of a particular user rather than all ones in the table.
Does Oban have interface for retrieving the information about the jobs at all? If so, how would I do this?
Otherwise, what would be a way to retrieve it? By SQL, directly from the table?
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
benwilson512
Hey @OrontaMedu at a high level you can simply
Oban.Job |> Repo.get(job_id)and query voila, you’ve got all of the relevant information.That said, if you find yourself needing to modify the
oban_jobstable to do things like store auser_idI would strongly suggest doing your own modeling around users and tasks, and then having those track which oban jobs are relevant. Theoban_jobstable can see a lot of load and it is not optimal to use as both a canonical store of user related information AND a job queue.OrontaMedu
I’ll create my own table –
user_jobs (some_fields, ......., user_id, oban_job_id)benwilson512
Yea I think that’s a great idea. This way you can also delete the actual oban job after a while (via the pruner) to keep that table small and performant. I’d make sure to denormalize any data you want to keep for the long term in your
user_jobstable.