• 1 Post
  • 26 Comments
Joined 1 year ago
cake
Cake day: August 8th, 2023

help-circle




  • Well. I did read up on the “XY” problem and apparently you assume that what I want to do is somehow bad practice.

    To elaborate more on the problem: I am writing an axum backend which (like other backends) needs to do stuff in the database. As some endpoints update the database (and sometimes over multiple sql statements) I want to pass around the transaction as this embodies the connection I am using to update the database.

    To separate the axum stuff (parameters, urls and whatnot) from the actual database logic, I’ve first pulled out all the database interactions into separate functions. Because those functions are logically groups (e.g. stuff happening with invoices, others with contacts etc), I thought it was a good idea to create a “dao” struct (and agreed: my OO brain kicked in here which might be debatable). This would group the interactions for each logical domain into a short-lived data access struct.

    To prevent passing around the transaction/connection, i wanted to pass that along during construction, so the functions in the DAO could just access the connection when needed.

    Non “OO” would be fine to be honest (just having all the DAO as functions in a separate package).

    Sorry, no code, not at the computer atm.

    (And yes, I am aware that rust is not OO, put away the pitchforks please 🙏)





  • I am currently using it from a backend to generate pdfs.

    One thing that prevents me from letting users build their own templates is the scripting capabilities. A joker creating an endless loop could block the whole server.

    What would be nice is a “safe” mode in which no access to the file system (include and sorts) and limited runtime makes it safe to let users build their own templates.