class

PlaceOS::Model::SignageAIJob

Inherits Neuroplastic < PgORM::Timestamps < PgORM::Base < PgORM::Validators < PgORM::Table < PgORM::Persistence < PgORM::Associations < ActiveModel::Callbacks < ActiveModel::Validation < ActiveModel::Model < DB::Mappable < DB::Serializable < YAML::Serializable < JSON::Serializable < Reference < Object

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Constants

CALLBACKS = { before_save: [do if (__temp_1485 = @authority) && __temp_1485.new_record? __temp_1485.save self.authority_id = __temp_1485.id.not_nil! end end, do if (__temp_1486 = @provider) && __temp_1486.new_record? __temp_1486.save self.provider_id = __temp_1486.id.not_nil! end end, do if (__temp_1487 = @user) && __temp_1487.new_record? __temp_1487.save self.user_id = __temp_1487.id.not_nil! end end] of Nil, after_save: [] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end, :cleanup_expired_jobs] of Nil, after_create: [] of Nil, before_update: [do self.updated_at = Time.utc end] of Nil, after_update: [] of Nil, before_destroy: [] of Nil, after_destroy: [do end, do end, do end] of Nil, }

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

CLEANUP_AFTER = ((ENV["SIGNAGE_AI_CLEANUP_DAYS"]?.try(&.to_i?) || 0).days)

How long a job row is kept, once cleanup is turned on.

Off unless SIGNAGE_AI_CLEANUP_DAYS is set to a positive number of days, so nothing starts deleting a site's history because it was upgraded. Somewhere that generates seasonally keeps last year's work by doing nothing at all. Zero and negatives both read as "keep everything" rather than as a cutoff in the future that would take the whole table with it.

Note for operators turning it on: the usage report and the per domain monthly quota both read this table, so a window shorter than a month makes both under-count.

CLEANUP_BATCH = 1000

Rows removed per insert. The work each job creation does is bounded, so a long disabled cleanup being switched back on cannot stall a request while it catches up: it takes several inserts instead of one long one.

Log = ::Log.for(self)
PRIMARY_KEY_TYPES = {:id => UUID} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:id}]

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Constructors

from_json(string_or_io : String | IO, trusted : Bool = false) : self

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

from_json(string_or_io : String | IO, root : String, trusted : Bool = false) : self

Deserializes the given JSON in string_or_io into an instance of self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. Will not deserialise from fields with mass_assign: false

class User < ActiveModel::Model
  attribute name : String
  attribute google_id : UUID, mass_assign: false
end

User.from_json(%({"main": {"name": "Jason", "google_id": "f6f70bfb-c882-446d-8758-7ce47db39620"}}), root: "main") # => #<User:0x103131b20 @name="Jason">
from_trusted_json(string_or_io : String | IO, root : String) : self

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

from_trusted_json(string_or_io : String | IO) : self

Serialize from a trusted JSON source

from_trusted_yaml(string_or_io : String | IO) : self

Serialize from a trusted YAML source

from_yaml(string_or_io : String | IO, trusted : Bool = false) : self

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Source
new(pull : JSON::PullParser)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Source
new(rs : DB::ResultSet)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

new(created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : UUID | ActiveModel::Model::None = ::ActiveModel::Model::None.new, authority_id : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, provider_id : UUID | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, provider_type : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, model : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_email : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, parent_job_id : UUID | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, version : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, kind : PlaceOS::Model::SignageAIJob::Kind | ActiveModel::Model::None = ::ActiveModel::Model::None.new, state : PlaceOS::Model::SignageAIJob::State | ActiveModel::Model::None = ::ActiveModel::Model::None.new, cancel_requested : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, idempotency_key : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, candidates : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, images_produced : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, prompt : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, request : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, result : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, error_kind : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, error_message : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, upload_ids : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, cost_units : Float64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, latency_ms : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, started_at : Time | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, finished_at : Time | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Initialize PlaceOS::Model::SignageAIJob from HTTP::Params.

Class methods

attach_item(id : UUID, index : Int32, image : JSON::Any | Hash(String, JSON::Any)) : Int32 | Nil

Write one candidate's entry without counting it as newly produced.

bump_image has the increment welded into its statement because it is the runner recording a candidate that has just landed. Claiming records that an image the runner already counted became a media item, so it must not count again: it did, and the usage report was inflated by every save.

Source
attributes

Returns all attribute keys.

bump_image(id : UUID, index : Int32, image : JSON::Any | Hash(String, JSON::Any)) : Int32 | Nil

Write one candidate into result->'images'->index and bump the version, in a single statement. Candidate fibers must never load, modify and save the row: save writes the whole column and would drop entries written concurrently.

Source
bump_version(id : UUID) : Int32 | Nil

Bump the version without touching the images, so a state change wakes a long polling client too.

Source
by_authority_id(id)
Source
by_provider_id(id)
Source
by_user_id(id)
Source
changefeed_ignored_update_columns

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

changes(id : UUID | Nil = nil) : ChangeFeed

Changefeed at row (if id passed) or whole table level. Returns a ChangeFeed instance which can be used to invoke async callbacks via on or use blocking Iterator via each method.

cleanup_after

The window actually used, seeded from the constant above. Settable so the specs can exercise a configured window, which a constant read at compile time cannot express.

Source
cleanup_after=(cleanup_after : Time::Span)

The window actually used, seeded from the constant above. Settable so the specs can exercise a configured window, which a constant read at compile time cannot express.

Source
cleanup_expired(limit : Int32 = CLEANUP_BATCH) : Int32

Remove job rows past the retention window. Returns how many went.

Two statements rather than one DELETE ... WHERE id IN (SELECT ... LIMIT n FOR UPDATE SKIP LOCKED). That single statement does not reliably delete at most n rows. When the planner picks a nested loop semi join it re-runs the subquery once per candidate row, and because SKIP LOCKED and the rows already deleted by this statement change what comes back each time, the delete lands on the union of those evaluations. Confirmed here with auto_explain: a hash semi join runs the Limit once and removes 2 of 3, a nested loop runs it three times and removes all 3. Which plan you get moves with the table statistics, so it is fine until it suddenly is not.

Reading the ids first and deleting exactly those cannot be re-evaluated.

The delete runs in a nested transaction, which PgORM issues as a SAVEPOINT, so a failure rolls back to the savepoint and leaves the surrounding insert intact. Without it a failed delete would poison the whole transaction and take the new job down with it.

Source
elastic
from_rs(__temp_2568 : DB::ResultSet)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

on_error(err : Exception | IO::Error)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

primary_key

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Source
stale(older_than : Time) : Array(SignageAIJob)

Jobs left running by a replica that went away.

Source
sum_candidates(user_id : String, since : Time) : Int32

Candidates requested by a user since a point in time, for the per user quota.

Failed jobs count. Most of them reached the vendor and were billed, and exempting them meant a caller whose requests kept failing had no limit at all, which is the one case where a limit matters most.

Source
sum_candidates_for_authority(authority_id : String, since : Time) : Int32

Candidates requested across a domain since a point in time, for the domain quota.

Source
table_name

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

usage(authority_id : String, from : Time, to : Time) : Array(UsageRow)
Source

Instance methods

after_create

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

after_destroy

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

after_initialize(trusted : Bool)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

after_save

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

after_update

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

apply_defaults

Generate code to apply default values

assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, id : UUID | Missing = Missing, authority_id : String | Missing = Missing, provider_id : UUID | Nil | Missing = Missing, provider_type : String | Nil | Missing = Missing, model : String | Nil | Missing = Missing, user_id : String | Nil | Missing = Missing, user_email : String | Nil | Missing = Missing, user_name : String | Nil | Missing = Missing, parent_job_id : UUID | Nil | Missing = Missing, version : Int32 | Missing = Missing, kind : PlaceOS::Model::SignageAIJob::Kind | Missing = Missing, state : PlaceOS::Model::SignageAIJob::State | Missing = Missing, cancel_requested : Bool | Missing = Missing, idempotency_key : String | Nil | Missing = Missing, candidates : Int32 | Missing = Missing, images_produced : Int32 | Missing = Missing, prompt : String | Nil | Missing = Missing, request : JSON::Any | Missing = Missing, result : JSON::Any | Missing = Missing, error_kind : String | Nil | Missing = Missing, error_message : String | Nil | Missing = Missing, upload_ids : Array(String) | Missing = Missing, cost_units : Float64 | Nil | Missing = Missing, latency_ms : Int64 | Nil | Missing = Missing, started_at : Time | Nil | Missing = Missing, finished_at : Time | Nil | Missing = Missing)

Assign to multiple attributes.

assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String))

Assign to multiple attributes via HTTP::Params.

assign_attributes(model : PlaceOS::Model::SignageAIJob)

Assign to multiple attributes from a model object

assign_attributes_from_json(json, root : String)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

assign_attributes_from_json(json)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

assign_attributes_from_trusted_json(json, root : String)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

assign_attributes_from_trusted_json(json)

Assign each field from JSON if field exists in JSON and has changed in model

assign_attributes_from_trusted_yaml(yaml)

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

assign_attributes_from_yaml(yaml)

Uses the YAML parser as JSON is valid YAML

attributes

Returns a Hash of all attribute values

attributes_tuple

Returns a NamedTuple of all attribute values.

authority
Source
authority!
Source
authority?
Source
authority_id

authority_id getter

authority_id=(value : String)

authority_id setter

authority_id?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

authority_id_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

authority_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

authority_id_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

authority_id_default

authority_id's default value

Source
authority_id_present?
authority_id_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

authority_id_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

authority_id_will_change!

Include authority_id in the set of changed attributes, whether it has changed or not.

before_create

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

before_destroy

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

before_save

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

before_update

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

build_authority
Source
build_provider
Source
build_user
Source
cancel_requested

cancel_requested getter

cancel_requested=(value : Bool)

cancel_requested setter

cancel_requested?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

cancel_requested_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cancel_requested_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

cancel_requested_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cancel_requested_default

cancel_requested's default value

Source
cancel_requested_present?
cancel_requested_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cancel_requested_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cancel_requested_will_change!

Include cancel_requested in the set of changed attributes, whether it has changed or not.

candidates

candidates getter

candidates=(value : Int32)

candidates setter

candidates?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

candidates_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

candidates_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

candidates_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

candidates_default

candidates's default value

Source
candidates_present?
candidates_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

candidates_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

candidates_will_change!

Include candidates in the set of changed attributes, whether it has changed or not.

chain(limit : Int32 = 25) : Array(SignageAIJob)

Walk back up a refine chain, oldest first. Bounded so a cycle cannot hang a request.

Source
changed?

Check if any attributes have changed.

changed_attributes

Returns a Hash with all changed attributes.

changed_json(io : IO) : Nil

Serialize the set of changed attributes to JSON.

changed_json

Serialize the set of changed attributes to JSON.

changed_persist_attributes

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

changed_yaml(io : IO) : Nil

Serialize the set of changed attributes to YAML.

changed_yaml

Serialize the set of changed attributes to YAML.

clear_changes_information

Reset changes for all attributes.

cost_units

cost_units getter

cost_units=(value : Float64 | Nil)

cost_units setter

cost_units_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cost_units_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

cost_units_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cost_units_default

cost_units's default value

Source
cost_units_present?
cost_units_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cost_units_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

cost_units_will_change!

Include cost_units in the set of changed attributes, whether it has changed or not.

create_authority
Source
create_authority!
Source
create_provider
Source
create_provider!
Source
create_user
Source
create_user!
Source
created_at

created_at getter

created_at=(value : Time)

Setters created_at setter

created_at?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

created_at_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

created_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

created_at_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

created_at_default

created_at's default value

created_at_present?
created_at_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

created_at_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

created_at_will_change!

Include created_at in the set of changed attributes, whether it has changed or not.

error_kind

error_kind getter

error_kind=(value : String | Nil)

error_kind setter

error_kind_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_kind_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

error_kind_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_kind_default

error_kind's default value

Source
error_kind_present?
error_kind_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_kind_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_kind_will_change!

Include error_kind in the set of changed attributes, whether it has changed or not.

error_message

error_message getter

error_message=(value : String | Nil)

error_message setter

error_message_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_message_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

error_message_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_message_default

error_message's default value

Source
error_message_present?
error_message_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_message_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

error_message_will_change!

Include error_message in the set of changed attributes, whether it has changed or not.

final?
Source
finished_at

finished_at getter

finished_at=(value : Time | Nil)

finished_at setter

finished_at_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

finished_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

finished_at_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

finished_at_default

finished_at's default value

Source
finished_at_present?
finished_at_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

finished_at_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

finished_at_will_change!

Include finished_at in the set of changed attributes, whether it has changed or not.

id

id getter

id=(value : UUID)

id setter

id?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

id_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

id_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

id_default

id's default value

id_present?
id_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

id_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

id_will_change!

Include id in the set of changed attributes, whether it has changed or not.

idempotency_key

idempotency_key getter

idempotency_key=(value : String | Nil)

idempotency_key setter

idempotency_key_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

idempotency_key_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

idempotency_key_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

idempotency_key_default

idempotency_key's default value

Source
idempotency_key_present?
idempotency_key_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

idempotency_key_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

idempotency_key_will_change!

Include idempotency_key in the set of changed attributes, whether it has changed or not.

images

The candidate slots, in order. Entries are null until that candidate lands.

Source
images_produced

images_produced getter

images_produced=(value : Int32)

images_produced setter

images_produced?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

images_produced_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

images_produced_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

images_produced_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

images_produced_default

images_produced's default value

Source
images_produced_present?
images_produced_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

images_produced_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

images_produced_will_change!

Include images_produced in the set of changed attributes, whether it has changed or not.

invoke_props

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

kind

kind getter

kind setter

kind?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

kind_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

kind_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

kind_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

kind_default

kind's default value

Source
kind_present?
kind_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

kind_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

kind_will_change!

Include kind in the set of changed attributes, whether it has changed or not.

latency_ms

latency_ms getter

latency_ms=(value : Int64 | Nil)

latency_ms setter

latency_ms_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

latency_ms_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

latency_ms_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

latency_ms_default

latency_ms's default value

Source
latency_ms_present?
latency_ms_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

latency_ms_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

latency_ms_will_change!

Include latency_ms in the set of changed attributes, whether it has changed or not.

model

model getter

model=(value : String | Nil)

model setter

model_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

model_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

model_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

model_default

model's default value

Source
model_present?
model_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

model_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

model_will_change!

Include model in the set of changed attributes, whether it has changed or not.

parent_job_id

parent_job_id getter

parent_job_id=(value : UUID | Nil)

parent_job_id setter

parent_job_id_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

parent_job_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

parent_job_id_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

parent_job_id_default

parent_job_id's default value

Source
parent_job_id_present?

a refine points at the job it was refined from

parent_job_id_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

parent_job_id_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

parent_job_id_will_change!

Include parent_job_id in the set of changed attributes, whether it has changed or not.

persistent_attributes

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

primary_key

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

Source
primary_key_hash

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

prompt

prompt getter

prompt=(value : String | Nil)

prompt setter

prompt_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

prompt_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

prompt_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

prompt_default

prompt's default value

Source
prompt_present?
prompt_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

prompt_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

prompt_will_change!

Include prompt in the set of changed attributes, whether it has changed or not.

provider
Source
provider!
Source
provider?
Source
provider_id

provider_id getter

provider_id=(value : UUID | Nil)

provider_id setter

provider_id_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

provider_id_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_id_default

provider_id's default value

Source
provider_id_present?
provider_id_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_id_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_id_will_change!

Include provider_id in the set of changed attributes, whether it has changed or not.

provider_type

provider_type getter

provider_type=(value : String | Nil)

provider_type setter

provider_type_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_type_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

provider_type_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_type_default

provider_type's default value

Source
provider_type_present?

recorded as strings as well so a job survives its provider row being deleted (named provider_type because provider is the belongs_to association above)

provider_type_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_type_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

provider_type_will_change!

Include provider_type in the set of changed attributes, whether it has changed or not.

reload_authority
Source
reload_authority?
Source
reload_provider
Source
reload_provider?
Source
reload_user
Source
reload_user?
Source
request

request getter

request=(value : JSON::Any)

request setter

request?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

request_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

request_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

request_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

request_default

request's default value

Source
request_present?
request_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

request_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

request_will_change!

Include request in the set of changed attributes, whether it has changed or not.

restore_attributes

Reset each attribute to their previous values and clears all changes.

result

result getter

result=(value : JSON::Any)

result setter

result?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

result_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

result_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

result_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

result_default

result's default value

Source
result_present?
result_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

result_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

result_will_change!

Include result in the set of changed attributes, whether it has changed or not.

started_at

started_at getter

started_at=(value : Time | Nil)

started_at setter

started_at_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

started_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

started_at_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

started_at_default

started_at's default value

Source
started_at_present?
started_at_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

started_at_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

started_at_will_change!

Include started_at in the set of changed attributes, whether it has changed or not.

state

state getter

state setter

state?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

state_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

state_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

state_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

state_default

state's default value

Source
state_present?
state_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

state_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

state_will_change!

Include state in the set of changed attributes, whether it has changed or not.

table_name

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

updated_at

updated_at getter

updated_at=(value : Time)

updated_at setter

updated_at?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

updated_at_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

updated_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

updated_at_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

updated_at_default

updated_at's default value

updated_at_present?
updated_at_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

updated_at_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

updated_at_will_change!

Include updated_at in the set of changed attributes, whether it has changed or not.

upload_ids

upload_ids getter

upload_ids=(value : Array(String))

upload_ids setter

upload_ids?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

upload_ids_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

upload_ids_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

upload_ids_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

upload_ids_default

upload_ids's default value

Source
upload_ids_present?
upload_ids_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

upload_ids_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

upload_ids_will_change!

Include upload_ids in the set of changed attributes, whether it has changed or not.

user
Source
user!
Source
user?
Source
user_email

user_email getter

user_email=(value : String | Nil)

user_email setter

user_email_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_email_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

user_email_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_email_default

user_email's default value

Source
user_email_present?
user_email_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_email_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_email_will_change!

Include user_email in the set of changed attributes, whether it has changed or not.

user_id

user_id getter

user_id=(value : String | Nil)

user_id setter

user_id_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

user_id_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_id_default

user_id's default value

Source
user_id_present?
user_id_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_id_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_id_will_change!

Include user_id in the set of changed attributes, whether it has changed or not.

user_name

user_name getter

user_name=(value : String | Nil)

user_name setter

user_name_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_name_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

user_name_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_name_default

user_name's default value

Source
user_name_present?
user_name_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_name_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

user_name_will_change!

Include user_name in the set of changed attributes, whether it has changed or not.

validate_nilability

Validate that all non-nillable fields have values.

version

version getter

version=(value : Int32)

version setter

version?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

version_assigned?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

version_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

version_changed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

version_default

version's default value

Source
version_present?
version_removed?

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

version_was

One image generation or edit request.

Candidates are written into result["images"] one at a time by the runner as each vendor call finishes. Every write bumps version, which is what the long polling endpoint compares against so a client can tell what it has already seen (updated_at only has whole second resolution and cannot order two writes in the same second).

version_will_change!

Include version in the set of changed attributes, whether it has changed or not.

Nested types