Перайсці да асноўнага змесціва

Сэрвісы і кантракты выканання

Гэтыя пункты ўваходу падтрымліваюць праграмную генерацыю, рэгістрацыю стужак, інтэграцыю з планіроўшчыкам, пераўтварэнне скалярных значэнняў і неабавязковыя палі.

GeneratorService

DragonCode\LaravelFeed\Services\GeneratorService генеруе і публікуе адну стужку.

public function feed(Feed $feed, ?OutputStyle $output = null): GenerationResultData

Метад публікуе ўсе часткі як адну аперацыю, абнаўляе час апошняй актыўнасці рэгістрацыі, адпраўляе падзеі жыццёвага цыкла і вяртае шляхі з колькасцю запісаў у кожным файле. Вызначэнне сховішча і атрыманне шляху вываду адбываюцца да пачатку генерацыі. Для звычайнай стужкі выключэнні падчас гэтай папярэдняй праверкі, у тым ліку UnsupportedStorageDiskException, выкідваюцца непасрэдна. Для наладжанай стужкі, якая рэалізуе HasFeedTargets, памылкі папярэдняй праверкі абгортваюцца ў FeedGenerationException, каб ключ мэты заставаўся даступным. Пасля паспяховай папярэдняй праверкі памылкі генерацыі абгортваюцца для кожнай стужкі, а зыходнае выключэнне захоўваецца як папярэдняе.

Атрымлівайце сэрвіс праз кантэйнер Laravel, а не стварайце яго ўнутраныя залежнасці ўручную.

use App\Feeds\UserFeed;
use DragonCode\LaravelFeed\Services\GeneratorService;

$result = app(GeneratorService::class)->feed(app(UserFeed::class));

foreach ($result->records as $path => $count) {
processFeedResult($path, $count);
}

GeneratorService генеруе адну наладжаную стужку і не пералічвае мэты. Пры непасрэдным выкліку спачатку вызначце мэту:

use App\Feeds\PartnerFeed;
use DragonCode\LaravelFeed\Services\GeneratorService;
use RuntimeException;

$feed = app(PartnerFeed::class);
$target = $feed->findTarget('42')
?? throw new RuntimeException('Feed target [42] not found.');

$result = app(GeneratorService::class)->feed(
$feed->forTarget($target),
);

FeedQuery

DragonCode\LaravelFeed\Queries\FeedQuery кіруе захаванымі рэгістрацыямі стужак.

МетадВынік
`create(string $class, string $title, Expressionstring $expression = '0 * * * *', bool $isActive = true, array $extra = []): Feed`
find(int $id): FeedВяртае рэгістрацыю або кідае FeedNotFoundException.
all(): BuilderВяртае ўсе рэгістрацыі, упарадкаваныя па ідэнтыфікатары.
active(): BuilderВяртае актыўныя рэгістрацыі, упарадкаваныя па ідэнтыфікатары.
setLastActivity(string $class): voidАбнаўляе last_activity для класа стужкі.
delete(int $id): voidМякка выдаляе рэгістрацыю па ідэнтыфікатары.
deleteByClass(string $class): voidКанчаткова выдаляе рэгістрацыі класа, у тым ліку раней выдаленыя.
restore(int $id): voidАднаўляе мякка выдаленую рэгістрацыю.

$expression прымае звычайны радок з выразам cron, у тым ліку псеўданімы накшталт @daily, якія падтрымлівае dragonmantank/cron-expression, або DragonCode\LaravelFeed\Scheduling\Expression. Аб'екты з ланцужковымі выклікамі пераўтвараюцца ў радок cron да праверкі і захавання. Пры чытанні мадэлі вяртаецца захаваны радок. Прыклад прыведзены ў раздзеле «Выраз пры рэгістрацыі».

Для звычайных змяненняў рэгістрацыі выкарыстоўвайце згенераваную міграцыю або аперацыю разгортвання, каб іх можна было паўтарыць у кожным асяроддзі.

ScheduleFeedHelper

DragonCode\LaravelFeed\Helpers\ScheduleFeedHelper::register() дадае актыўныя рэгістрацыі ў планіроўшчык Laravel. Кожная рэгістрацыя выкарыстоўвае захаваны выраз cron і блакіроўку перакрыцця. Фонавае выкананне і час жыцця блакіроўкі задаюцца ў feeds.schedule.

Калі наладжаная табліца стужак не існуе, рэгістрацыя бяспечна прапускаецца.

Transformer

Рэалізуйце DragonCode\LaravelFeed\Contracts\Transformer, каб пераўтвараць падтрыманыя значэнні перад серыялізацыяй.

public function allow(mixed $value): bool public function transform(mixed $value): string

allow() вызначае, ці прымае пераўтваральнік значэнне. transform() вяртае яго скалярнае прадстаўленне. Дадайце клас праз Feed::transformers() або feeds.transformers.

OptionalData

Вяртайце новы DragonCode\LaravelFeed\Data\OptionalData для поля, якое трэба прапусціць пры адсутнасці значэння. XML, RSS, JSON і JSON Lines прапускаюць яго. CSV захоўвае слупок і запісвае пустое поле.

Глядзіце таксама