Class Supaworker<Payload>

A worker that processes jobs from a queue. Use createSupaworker to create a new worker.

Type Parameters

  • Payload

Constructors

  • Type Parameters

    • Payload

    Parameters

    • client: default<Database, "supaworker", {
          CompositeTypes: {};
          Enums: {};
          Functions: {
              dequeue: {
                  Args: {
                      queue_name: string;
                  };
                  Returns: {
                      attempts: number;
                      created_at: string;
                      enabled: boolean;
                      id: number;
                      options: Json;
                      payload: Json;
                      queue: string;
                  }[];
              };
          };
          Tables: {
              jobs: {
                  Insert: {
                      attempts?: number;
                      created_at?: string;
                      enabled?: boolean;
                      id?: number;
                      options?: Json;
                      payload?: Json;
                      queue: string;
                  };
                  Relationships: [];
                  Row: {
                      attempts: number;
                      created_at: string;
                      enabled: boolean;
                      id: number;
                      options: Json;
                      payload: Json;
                      queue: string;
                  };
                  Update: {
                      attempts?: number;
                      created_at?: string;
                      enabled?: boolean;
                      id?: number;
                      options?: Json;
                      payload?: Json;
                      queue?: string;
                  };
              };
              logs: {
                  Insert: {
                      created_at?: string;
                      id?: string;
                      job: Json;
                      status: string;
                  };
                  Relationships: [];
                  Row: {
                      created_at: string;
                      id: string;
                      job: Json;
                      status: string;
                  };
                  Update: {
                      created_at?: string;
                      id?: string;
                      job?: Json;
                      status?: string;
                  };
              };
          };
          Views: {};
      }>
    • enqueue: EnqueueFunction<Payload>
    • work: SupaworkerHandler<Payload>
    • options: SupaworkerOptions

    Returns Supaworker<Payload>

Properties

channel: null | default = null
client: default<Database, "supaworker", {
    CompositeTypes: {};
    Enums: {};
    Functions: {
        dequeue: {
            Args: {
                queue_name: string;
            };
            Returns: {
                attempts: number;
                created_at: string;
                enabled: boolean;
                id: number;
                options: Json;
                payload: Json;
                queue: string;
            }[];
        };
    };
    Tables: {
        jobs: {
            Insert: {
                attempts?: number;
                created_at?: string;
                enabled?: boolean;
                id?: number;
                options?: Json;
                payload?: Json;
                queue: string;
            };
            Relationships: [];
            Row: {
                attempts: number;
                created_at: string;
                enabled: boolean;
                id: number;
                options: Json;
                payload: Json;
                queue: string;
            };
            Update: {
                attempts?: number;
                created_at?: string;
                enabled?: boolean;
                id?: number;
                options?: Json;
                payload?: Json;
                queue?: string;
            };
        };
        logs: {
            Insert: {
                created_at?: string;
                id?: string;
                job: Json;
                status: string;
            };
            Relationships: [];
            Row: {
                created_at: string;
                id: string;
                job: Json;
                status: string;
            };
            Update: {
                created_at?: string;
                id?: string;
                job?: Json;
                status?: string;
            };
        };
    };
    Views: {};
}>

Type declaration

  • CompositeTypes: {}
    • Enums: {}
      • Functions: {
            dequeue: {
                Args: {
                    queue_name: string;
                };
                Returns: {
                    attempts: number;
                    created_at: string;
                    enabled: boolean;
                    id: number;
                    options: Json;
                    payload: Json;
                    queue: string;
                }[];
            };
        }
        • dequeue: {
              Args: {
                  queue_name: string;
              };
              Returns: {
                  attempts: number;
                  created_at: string;
                  enabled: boolean;
                  id: number;
                  options: Json;
                  payload: Json;
                  queue: string;
              }[];
          }
          • Args: {
                queue_name: string;
            }
            • queue_name: string
          • Returns: {
                attempts: number;
                created_at: string;
                enabled: boolean;
                id: number;
                options: Json;
                payload: Json;
                queue: string;
            }[]
      • Tables: {
            jobs: {
                Insert: {
                    attempts?: number;
                    created_at?: string;
                    enabled?: boolean;
                    id?: number;
                    options?: Json;
                    payload?: Json;
                    queue: string;
                };
                Relationships: [];
                Row: {
                    attempts: number;
                    created_at: string;
                    enabled: boolean;
                    id: number;
                    options: Json;
                    payload: Json;
                    queue: string;
                };
                Update: {
                    attempts?: number;
                    created_at?: string;
                    enabled?: boolean;
                    id?: number;
                    options?: Json;
                    payload?: Json;
                    queue?: string;
                };
            };
            logs: {
                Insert: {
                    created_at?: string;
                    id?: string;
                    job: Json;
                    status: string;
                };
                Relationships: [];
                Row: {
                    created_at: string;
                    id: string;
                    job: Json;
                    status: string;
                };
                Update: {
                    created_at?: string;
                    id?: string;
                    job?: Json;
                    status?: string;
                };
            };
        }
        • jobs: {
              Insert: {
                  attempts?: number;
                  created_at?: string;
                  enabled?: boolean;
                  id?: number;
                  options?: Json;
                  payload?: Json;
                  queue: string;
              };
              Relationships: [];
              Row: {
                  attempts: number;
                  created_at: string;
                  enabled: boolean;
                  id: number;
                  options: Json;
                  payload: Json;
                  queue: string;
              };
              Update: {
                  attempts?: number;
                  created_at?: string;
                  enabled?: boolean;
                  id?: number;
                  options?: Json;
                  payload?: Json;
                  queue?: string;
              };
          }
          • Insert: {
                attempts?: number;
                created_at?: string;
                enabled?: boolean;
                id?: number;
                options?: Json;
                payload?: Json;
                queue: string;
            }
            • Optional attempts?: number
            • Optional created_at?: string
            • Optional enabled?: boolean
            • Optional id?: number
            • Optional options?: Json
            • Optional payload?: Json
            • queue: string
          • Relationships: []
          • Row: {
                attempts: number;
                created_at: string;
                enabled: boolean;
                id: number;
                options: Json;
                payload: Json;
                queue: string;
            }
            • attempts: number
            • created_at: string
            • enabled: boolean
            • id: number
            • options: Json
            • payload: Json
            • queue: string
          • Update: {
                attempts?: number;
                created_at?: string;
                enabled?: boolean;
                id?: number;
                options?: Json;
                payload?: Json;
                queue?: string;
            }
            • Optional attempts?: number
            • Optional created_at?: string
            • Optional enabled?: boolean
            • Optional id?: number
            • Optional options?: Json
            • Optional payload?: Json
            • Optional queue?: string
        • logs: {
              Insert: {
                  created_at?: string;
                  id?: string;
                  job: Json;
                  status: string;
              };
              Relationships: [];
              Row: {
                  created_at: string;
                  id: string;
                  job: Json;
                  status: string;
              };
              Update: {
                  created_at?: string;
                  id?: string;
                  job?: Json;
                  status?: string;
              };
          }
          • Insert: {
                created_at?: string;
                id?: string;
                job: Json;
                status: string;
            }
            • Optional created_at?: string
            • Optional id?: string
            • job: Json
            • status: string
          • Relationships: []
          • Row: {
                created_at: string;
                id: string;
                job: Json;
                status: string;
            }
            • created_at: string
            • id: string
            • job: Json
            • status: string
          • Update: {
                created_at?: string;
                id?: string;
                job?: Json;
                status?: string;
            }
            • Optional created_at?: string
            • Optional id?: string
            • Optional job?: Json
            • Optional status?: string
      • Views: {}
        hasWork: boolean = false
        working: boolean = false

        Methods

        • Logs the outcome of a job.

          Parameters

          • status: "success" | "failure" | "retry"

            Job completion status

          • job: SupaworkerJob<Payload>

            The original job

          Returns Promise<undefined | PostgrestSingleResponse<null>>

          supbase insert response

        • Start working on the queue.

          Returns Promise<void>

        • Stop working on the queue.

          Returns Promise<void>

        • Subscribe to the realtime queue to listen for new jobs.

          Returns void

        • Unsubscribe from the realtime queue.

          Returns Promise<void>