NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Každý kľúč má predvolenú hodnotu, takže publikovanie config/lifecycle.php je voliteľné. Publikovaný súbor v plnom znení:

return [
    'key_type' => env('LIFECYCLE_KEY_TYPE', 'bigint'),
    'actor_key_type' => env('LIFECYCLE_ACTOR_KEY_TYPE', 'bigint'),

    'models' => [
        'state' => LifecycleState::class,
        'transition' => LifecycleTransition::class,
        'schedule' => LifecycleSchedule::class,
    ],

    'resources' => [
        'actor' => TransitionActorResource::class,
    ],

    'subjects' => [],

    'strict_writes' => env('LIFECYCLE_STRICT_WRITES', true),

    'actor' => [
        'from_auth' => env('LIFECYCLE_ACTOR_FROM_AUTH', true),
        'guard' => env('LIFECYCLE_ACTOR_GUARD'),
    ],

    'transactions' => [
        'attempts' => 3,
        'mysql_read_committed' => env('LIFECYCLE_MYSQL_READ_COMMITTED', true),
    ],

    'history' => [
        'store_payload' => env('LIFECYCLE_HISTORY_STORE_PAYLOAD', true),
        'max_context_bytes' => 16384,
        'reason_max_length' => 1000,
        'purge_on_force_delete' => env('LIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETE', true),
        'prune_after_days' => env('LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS'),
    ],

    'rollback' => [
        'default_window' => env('LIFECYCLE_ROLLBACK_DEFAULT_WINDOW'),
        'max_steps' => 50,
    ],

    'schedules' => [
        'batch_size' => 500,
        'max_per_run' => 10000,
        'max_attempts' => 5,
        'retry_after' => '5 minutes',
        'queue' => [
            'enabled' => env('LIFECYCLE_QUEUE_SWEEPS', false),
            'connection' => env('LIFECYCLE_QUEUE_CONNECTION'),
            'name' => env('LIFECYCLE_QUEUE'),
        ],
        'prune_after_days' => env('LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS', 30),
    ],

    'rate_limits' => [
        'prefix' => 'lifecycle',
    ],

    'graph' => [
        'default_format' => 'mermaid',
    ],
];

Všetky kľúče

KľúčPredvolenéEnvÚčel
key_typebigintLIFECYCLE_KEY_TYPETyp id stĺpcov subjektu, ktoré vytvoria migrácie: bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen). Nastavte pred migráciou; iná hodnota vyhodí výnimku.
actor_key_typebigintLIFECYCLE_ACTOR_KEY_TYPETyp id stĺpcov aktéra (kto vykonal prechod, zmrazil, naplánoval): bigint, uuid alebo ulid; iná hodnota vyhodí výnimku.
models.stateLifecycleState—Nahradí model záznamu stavu vašou podtriedou (musí rozširovať LifecycleState).
models.transitionLifecycleTransition—Nahradí model histórie vašou podtriedou (musí rozširovať LifecycleTransition).
models.scheduleLifecycleSchedule—Nahradí model plánov vašou podtriedou (musí rozširovať LifecycleSchedule).
resources.actorTransitionActorResource—Vykreslí aktéra riadku histórie ako {id, type}, kde type je krátky názov triedy modelu aktéra. Nahraďte ho vlastnou podtriedou JsonResource, ktorá dostane TransitionRecord; prázdna hodnota alebo null znamená resource balíka.
subjects[]—Vaše modely so životným cyklom. lifecycle:validate bez argumentov overí každý cyklus každého uvedeného modelu vrátane stĺpcov, ktoré definícia menuje. Modely fungujú aj bez uvedenia.
strict_writestrueLIFECYCLE_STRICT_WRITESUloženie priamo zmeneného atribútu cyklu vyhodí DirectStateWriteException.
actor.from_authtrueLIFECYCLE_ACTOR_FROM_AUTHBez by() je aktérom prihlásený používateľ.
actor.guardnullLIFECYCLE_ACTOR_GUARDAuth guard pre from_auth (null = predvolený guard).
transactions.attempts3—Koľkokrát sa transakcia po deadlocku zopakuje (1–10) — len ak vonkajšiu transakciu otvoril balík.
transactions.mysql_read_committedtrueLIFECYCLE_MYSQL_READ_COMMITTEDMySQL/MariaDB: transakcia, ktorá počíta kvótu, beží na READ COMMITTED. Vypnuté: zostane vaša izolácia a počet kvóty použije zamykacie čítania.
history.store_payloadtrueLIFECYCLE_HISTORY_STORE_PAYLOADUloží zvalidovaný payload (bez kľúčov zo sensitive()) do riadku histórie.
history.max_context_bytes16384—Limit veľkosti JSON uloženého kontextu (1024–1048576); väčší sa zamietne ako invalid_payload.
history.reason_max_length1000—Dlhšie dôvody sa zamietnu ako reason_too_long — pri prechodoch, plánoch aj rollbackoch; dlhší dôvod zmrazenia vyhodí InvalidLifecycleUsageException (1–10000).
history.purge_on_force_deletetrueLIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETETrvalé zmazanie subjektu zmaže aj jeho záznamy, históriu a plány.
history.prune_after_daysnullLIFECYCLE_HISTORY_PRUNE_AFTER_DAYSPredvolená hodnota lifecycle:prune pre riadky histórie (1–36500; null alebo prázdna hodnota = nikdy). Limity čistenie prežijú, staršie body rollbacku a idempotentné kľúče nie.
rollback.default_windownullLIFECYCLE_ROLLBACK_DEFAULT_WINDOWAko dlho sa dá prechod vrátiť, ak nedeklaruje vlastné okno („7 days“; null alebo prázdna hodnota = bez obmedzenia).
rollback.max_steps50—Najviac riadkov, ktoré vráti jedno rollbackTo() (1–1000).
schedules.batch_size500—Riadky na jednu dávku sweepu (1–10000).
schedules.max_per_run10000—Najviac plánov, ktoré spracuje jeden beh sweepu (1–1000000).
schedules.max_attempts5—Počet pokusov, kým sa opakovateľný naplánovaný prechod označí ako zlyhaný (1–100).
schedules.retry_after5 minutes—Odklad, po ktorom sa zamietnutý, chybný alebo zmrazený naplánovaný prechod skúsi znova. Prázdna hodnota sa považuje za nenastavenú → 5 minutes.
schedules.queue.enabledfalseLIFECYCLE_QUEUE_SWEEPSSweep odošle jeden job na každý splatný plán namiesto behu priamo.
schedules.queue.connectionnullLIFECYCLE_QUEUE_CONNECTIONPripojenie fronty pre tieto joby.
schedules.queue.namenullLIFECYCLE_QUEUENázov fronty pre tieto joby.
schedules.prune_after_days30LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYSPredvolená hodnota lifecycle:prune pre dokončené plány (1–36500; null alebo prázdna hodnota = nikdy).
rate_limits.prefixlifecycle—Prefix kľúčov rate limitera pre prechody s rateLimit(); započítava sa do limitu 250 znakov pre kľúč.
graph.default_formatmermaid—Presne mermaid alebo dot — formát grafu, ak nie je zadaný.

Striktné hodnoty

Každá hodnota sa overí pri čítaní, takže preklep nikdy potichu nevráti predvolenú hodnotu:

  • Prázdna hodnota (LIFECYCLE_X= alebo len medzery) sa považuje za nenastavenú: platí predvolená hodnota kľúča a kľúč, ktorý pripúšťa null (LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS=, LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS=, LIFECYCLE_ROLLBACK_DEFAULT_WINDOW=), sa číta ako nenastavený (null).
  • Boolean hodnoty akceptujú true/false/1/0/yes/no/on/off bez ohľadu na veľkosť písmen (prázdna hodnota dostane predvolenú, takže LIFECYCLE_STRICT_WRITES= striktné zápisy ponechá zapnuté); akákoľvek iná hodnota vyhodí InvalidLifecycleConfigurationException s názvom kľúča aj hodnotou.
  • key_type a actor_key_type akceptujú len bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen; prázdna hodnota sa číta ako bigint); čokoľvek iné vyhodí počas migrate a about InvalidConfigurationException z toolkitu — nie LifecycleException, takže ju catch (LifecycleException) nezachytí.
  • Čísla musia byť kanonické celé čísla: '5.5', '+5' a '1e3' vyhodia výnimku. Číslo alebo interval mimo rozsahu vyhodí InvalidLifecycleConfigurationException.
  • graph.default_format musí byť presne mermaid alebo dot. Vymenený model (models.*) musí byť existujúca trieda, ktorá rozširuje model balíka, inak InvalidLifecycleConfigurationException — nikdy sa nevráti k modelu balíka.
  • resources.actor musí byť inštanciovateľná podtrieda JsonResource (prázdna hodnota alebo null je resource balíka), inak pri vykreslení prvého riadku histórie s aktérom vyhodí InvalidLifecycleConfigurationException (notAResource).
  • Hodnota vyhodí výnimku, keď ju niečo prvýkrát prečíta. php artisan about číta typy kľúčov, väčšinu boolean hodnôt, modely aj subjekty, preto ho spúšťajte po každej zmene konfigurácie — preklep sa ukáže hneď.

Registrácia subjektov

Svoje modely so životným cyklom uveďte v subjects, aby mal lifecycle:validate v CI čo kontrolovať. Modely fungujú aj bez uvedenia; ak nie je uvedený žiadny, lifecycle:validate --strict zlyhá namiesto prázdneho úspechu:

// config/lifecycle.php
'subjects' => [
    App\Models\Listing::class,
    App\Models\Order::class,
],

Prostredie (env)

Všetky env premenné, ktoré konfigurácia číta, s predvolenými hodnotami:

LIFECYCLE_KEY_TYPE=bigint
LIFECYCLE_ACTOR_KEY_TYPE=bigint
LIFECYCLE_STRICT_WRITES=true
LIFECYCLE_ACTOR_FROM_AUTH=true
LIFECYCLE_ACTOR_GUARD=
LIFECYCLE_MYSQL_READ_COMMITTED=true
LIFECYCLE_HISTORY_STORE_PAYLOAD=true
LIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETE=true
LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS=
LIFECYCLE_ROLLBACK_DEFAULT_WINDOW=
LIFECYCLE_QUEUE_SWEEPS=false
LIFECYCLE_QUEUE_CONNECTION=
LIFECYCLE_QUEUE=
LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS=30

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.