@nextsparkjs/core 0.1.0-beta.92 → 0.1.0-beta.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/dashboard/block-editor/array-field.d.ts.map +1 -1
- package/dist/components/dashboard/block-editor/array-field.js +55 -3
- package/dist/components/dashboard/block-editor/dynamic-form.d.ts.map +1 -1
- package/dist/components/dashboard/block-editor/dynamic-form.js +82 -2
- package/dist/components/dashboard/navigation/DynamicNavigation.d.ts.map +1 -1
- package/dist/components/dashboard/navigation/DynamicNavigation.js +7 -1
- package/dist/components/devtools/scheduled-actions/actions-table.d.ts +1 -0
- package/dist/components/devtools/scheduled-actions/actions-table.d.ts.map +1 -1
- package/dist/components/devtools/scheduled-actions/actions-table.js +182 -46
- package/dist/components/devtools/scheduled-actions/types.d.ts +1 -0
- package/dist/components/devtools/scheduled-actions/types.d.ts.map +1 -1
- package/dist/components/media/MediaCard.d.ts +23 -0
- package/dist/components/media/MediaCard.d.ts.map +1 -0
- package/dist/components/media/MediaCard.js +154 -0
- package/dist/components/media/MediaDetailPanel.d.ts +17 -0
- package/dist/components/media/MediaDetailPanel.d.ts.map +1 -0
- package/dist/components/media/MediaDetailPanel.js +331 -0
- package/dist/components/media/MediaGrid.d.ts +26 -0
- package/dist/components/media/MediaGrid.d.ts.map +1 -0
- package/dist/components/media/MediaGrid.js +77 -0
- package/dist/components/media/MediaLibrary.d.ts +20 -0
- package/dist/components/media/MediaLibrary.d.ts.map +1 -0
- package/dist/components/media/MediaLibrary.js +229 -0
- package/dist/components/media/MediaList.d.ts +24 -0
- package/dist/components/media/MediaList.d.ts.map +1 -0
- package/dist/components/media/MediaList.js +181 -0
- package/dist/components/media/MediaSelector.d.ts +19 -0
- package/dist/components/media/MediaSelector.d.ts.map +1 -0
- package/dist/components/media/MediaSelector.js +145 -0
- package/dist/components/media/MediaTagFilter.d.ts +16 -0
- package/dist/components/media/MediaTagFilter.d.ts.map +1 -0
- package/dist/components/media/MediaTagFilter.js +122 -0
- package/dist/components/media/MediaToolbar.d.ts +25 -0
- package/dist/components/media/MediaToolbar.d.ts.map +1 -0
- package/dist/components/media/MediaToolbar.js +136 -0
- package/dist/components/media/MediaUploadZone.d.ts +19 -0
- package/dist/components/media/MediaUploadZone.d.ts.map +1 -0
- package/dist/components/media/MediaUploadZone.js +248 -0
- package/dist/components/media/index.d.ts +15 -0
- package/dist/components/media/index.d.ts.map +1 -0
- package/dist/components/media/index.js +20 -0
- package/dist/contexts/TeamContext.js +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts +4 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts.map +1 -1
- package/dist/hooks/useEnsureUserMetadata.js +85 -60
- package/dist/hooks/useEntityMutations.d.ts.map +1 -1
- package/dist/hooks/useEntityMutations.js +5 -9
- package/dist/hooks/useMedia.d.ts +56 -0
- package/dist/hooks/useMedia.d.ts.map +1 -0
- package/dist/hooks/useMedia.js +181 -0
- package/dist/hooks/useMediaUpload.d.ts +27 -0
- package/dist/hooks/useMediaUpload.d.ts.map +1 -0
- package/dist/hooks/useMediaUpload.js +36 -0
- package/dist/hooks/useUserSettings.d.ts +5 -4
- package/dist/hooks/useUserSettings.d.ts.map +1 -1
- package/dist/hooks/useUserSettings.js +42 -40
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/lib/api/auth/dual-auth.d.ts +6 -2
- package/dist/lib/api/auth/dual-auth.d.ts.map +1 -1
- package/dist/lib/api/auth/dual-auth.js +5 -9
- package/dist/lib/api/entity/generic-handler.d.ts.map +1 -1
- package/dist/lib/api/entity/generic-handler.js +3 -3
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +3 -2
- package/dist/lib/config/app.config.d.ts.map +1 -1
- package/dist/lib/config/app.config.js +37 -0
- package/dist/lib/config/config-sync.d.ts +1 -0
- package/dist/lib/config/config-sync.d.ts.map +1 -1
- package/dist/lib/config/config-sync.js +2 -0
- package/dist/lib/config/types.d.ts +29 -0
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/db.d.ts +10 -0
- package/dist/lib/db.d.ts.map +1 -1
- package/dist/lib/db.js +13 -1
- package/dist/lib/media/schemas.d.ts +39 -0
- package/dist/lib/media/schemas.d.ts.map +1 -0
- package/dist/lib/media/schemas.js +32 -0
- package/dist/lib/media/types.d.ts +69 -0
- package/dist/lib/media/types.d.ts.map +1 -0
- package/dist/lib/media/types.js +0 -0
- package/dist/lib/media/utils.d.ts +26 -0
- package/dist/lib/media/utils.d.ts.map +1 -0
- package/dist/lib/media/utils.js +33 -0
- package/dist/lib/rate-limit-redis.d.ts.map +1 -1
- package/dist/lib/rate-limit-redis.js +13 -4
- package/dist/lib/scheduled-actions/initializer.d.ts +6 -3
- package/dist/lib/scheduled-actions/initializer.d.ts.map +1 -1
- package/dist/lib/scheduled-actions/initializer.js +11 -6
- package/dist/lib/scheduled-actions/processor.d.ts +20 -4
- package/dist/lib/scheduled-actions/processor.d.ts.map +1 -1
- package/dist/lib/scheduled-actions/processor.js +128 -34
- package/dist/lib/scheduled-actions/registry.d.ts +3 -0
- package/dist/lib/scheduled-actions/registry.d.ts.map +1 -1
- package/dist/lib/scheduled-actions/registry.js +2 -1
- package/dist/lib/scheduled-actions/scheduler.d.ts +1 -1
- package/dist/lib/scheduled-actions/scheduler.d.ts.map +1 -1
- package/dist/lib/scheduled-actions/scheduler.js +76 -38
- package/dist/lib/scheduled-actions/types.d.ts +73 -0
- package/dist/lib/scheduled-actions/types.d.ts.map +1 -1
- package/dist/lib/selectors/core-selectors.d.ts +102 -0
- package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
- package/dist/lib/selectors/core-selectors.js +3 -1
- package/dist/lib/selectors/domains/block-editor.selectors.d.ts +8 -0
- package/dist/lib/selectors/domains/block-editor.selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/block-editor.selectors.js +9 -0
- package/dist/lib/selectors/domains/devtools.selectors.d.ts +6 -0
- package/dist/lib/selectors/domains/devtools.selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/devtools.selectors.js +6 -0
- package/dist/lib/selectors/domains/index.d.ts +1 -0
- package/dist/lib/selectors/domains/index.d.ts.map +1 -1
- package/dist/lib/selectors/domains/index.js +2 -0
- package/dist/lib/selectors/domains/media.selectors.d.ts +96 -0
- package/dist/lib/selectors/domains/media.selectors.d.ts.map +1 -0
- package/dist/lib/selectors/domains/media.selectors.js +103 -0
- package/dist/lib/selectors/selectors.d.ts +204 -0
- package/dist/lib/selectors/selectors.d.ts.map +1 -1
- package/dist/lib/services/index.d.ts +2 -0
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +2 -0
- package/dist/lib/services/media.service.d.ts +158 -0
- package/dist/lib/services/media.service.d.ts.map +1 -0
- package/dist/lib/services/media.service.js +410 -0
- package/dist/messages/de/devtools.json +16 -0
- package/dist/messages/de/index.d.ts +16 -0
- package/dist/messages/de/index.d.ts.map +1 -1
- package/dist/messages/en/admin.json +4 -1
- package/dist/messages/en/devtools.json +16 -0
- package/dist/messages/en/index.d.ts +167 -0
- package/dist/messages/en/index.d.ts.map +1 -1
- package/dist/messages/en/index.js +2 -0
- package/dist/messages/en/index.ts +2 -0
- package/dist/messages/en/media.json +147 -0
- package/dist/messages/en/navigation.json +1 -0
- package/dist/messages/es/admin.json +4 -1
- package/dist/messages/es/devtools.json +16 -0
- package/dist/messages/es/index.d.ts +167 -0
- package/dist/messages/es/index.d.ts.map +1 -1
- package/dist/messages/es/index.js +2 -0
- package/dist/messages/es/index.ts +2 -0
- package/dist/messages/es/media.json +147 -0
- package/dist/messages/es/navigation.json +1 -0
- package/dist/messages/fr/devtools.json +16 -0
- package/dist/messages/fr/index.d.ts +16 -0
- package/dist/messages/fr/index.d.ts.map +1 -1
- package/dist/messages/it/devtools.json +16 -0
- package/dist/messages/it/index.d.ts +16 -0
- package/dist/messages/it/index.d.ts.map +1 -1
- package/dist/messages/pt/devtools.json +16 -0
- package/dist/messages/pt/index.d.ts +16 -0
- package/dist/messages/pt/index.d.ts.map +1 -1
- package/dist/migrations/017_scheduled_actions_table.sql +21 -0
- package/dist/migrations/021_media.sql +154 -0
- package/dist/migrations/090_sample_data.sql +53 -0
- package/dist/styles/classes.json +36 -3
- package/dist/styles/ui.css +1 -1
- package/dist/templates/app/api/devtools/config/entities/route.ts +18 -11
- package/dist/templates/app/api/devtools/config/theme/route.ts +5 -4
- package/dist/templates/app/api/devtools/tests/[...path]/route.ts +6 -5
- package/dist/templates/app/api/devtools/tests/route.ts +5 -4
- package/dist/templates/app/api/health/route.ts +6 -4
- package/dist/templates/app/api/internal/user-metadata/route.ts +3 -2
- package/dist/templates/app/api/superadmin/subscriptions/route.ts +5 -6
- package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +6 -7
- package/dist/templates/app/api/superadmin/teams/route.ts +5 -6
- package/dist/templates/app/api/superadmin/users/[userId]/route.ts +11 -16
- package/dist/templates/app/api/superadmin/users/route.ts +9 -10
- package/dist/templates/app/api/user/delete-account/route.ts +3 -2
- package/dist/templates/app/api/user/plan-flags/route.ts +11 -24
- package/dist/templates/app/api/user/profile/route.ts +7 -6
- package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +16 -18
- package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +17 -19
- package/dist/templates/app/api/v1/[entity]/[id]/route.ts +10 -12
- package/dist/templates/app/api/v1/[entity]/route.ts +9 -11
- package/dist/templates/app/api/v1/api-keys/[id]/route.ts +9 -8
- package/dist/templates/app/api/v1/api-keys/route.ts +7 -6
- package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +3 -2
- package/dist/templates/app/api/v1/billing/cancel/route.ts +15 -14
- package/dist/templates/app/api/v1/billing/change-plan/route.ts +10 -9
- package/dist/templates/app/api/v1/billing/check-action/route.ts +8 -7
- package/dist/templates/app/api/v1/billing/checkout/route.ts +10 -9
- package/dist/templates/app/api/v1/billing/plans/route.ts +5 -4
- package/dist/templates/app/api/v1/billing/portal/route.ts +9 -8
- package/dist/templates/app/api/v1/blocks/[slug]/route.ts +4 -3
- package/dist/templates/app/api/v1/blocks/route.ts +3 -2
- package/dist/templates/app/api/v1/blocks/validate/route.ts +5 -3
- package/dist/templates/app/api/v1/cron/process/route.ts +4 -6
- package/dist/templates/app/api/v1/devtools/blocks/route.ts +3 -2
- package/dist/templates/app/api/v1/devtools/docs/route.ts +3 -2
- package/dist/templates/app/api/v1/devtools/features/route.ts +3 -2
- package/dist/templates/app/api/v1/devtools/flows/route.ts +3 -2
- package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +125 -3
- package/dist/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +110 -0
- package/dist/templates/app/api/v1/devtools/testing/route.ts +3 -2
- package/dist/templates/app/api/v1/media/[id]/route.ts +144 -0
- package/dist/templates/app/api/v1/media/[id]/tags/route.ts +154 -0
- package/dist/templates/app/api/v1/media/check-duplicates/route.ts +56 -0
- package/dist/templates/app/api/v1/media/route.ts +56 -0
- package/dist/templates/app/api/v1/media/upload/route.ts +157 -33
- package/dist/templates/app/api/v1/media-tags/route.ts +65 -0
- package/dist/templates/app/api/v1/plugin/[...path]/route.ts +16 -15
- package/dist/templates/app/api/v1/plugin/route.ts +3 -2
- package/dist/templates/app/api/v1/post-categories/[id]/route.ts +10 -9
- package/dist/templates/app/api/v1/post-categories/route.ts +5 -4
- package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +3 -3
- package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +3 -3
- package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +3 -2
- package/dist/templates/app/api/v1/team-invitations/route.ts +3 -2
- package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +5 -4
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +3 -2
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +3 -2
- package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +5 -4
- package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +5 -5
- package/dist/templates/app/api/v1/teams/[teamId]/route.ts +31 -58
- package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -2
- package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +5 -4
- package/dist/templates/app/api/v1/teams/route.ts +18 -17
- package/dist/templates/app/api/v1/teams/switch/route.ts +3 -2
- package/dist/templates/app/api/v1/theme/[...path]/route.ts +16 -15
- package/dist/templates/app/api/v1/theme/route.ts +3 -2
- package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +7 -6
- package/dist/templates/app/api/v1/users/[id]/route.ts +9 -8
- package/dist/templates/app/api/v1/users/route.ts +7 -6
- package/dist/templates/app/dashboard/(main)/media/page.tsx +607 -0
- package/dist/templates/contents/themes/starter/messages/de/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/de/index.ts +2 -0
- package/dist/templates/contents/themes/starter/messages/en/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/en/index.ts +2 -0
- package/dist/templates/contents/themes/starter/messages/es/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/es/index.ts +2 -0
- package/dist/templates/contents/themes/starter/messages/fr/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/fr/index.ts +2 -0
- package/dist/templates/contents/themes/starter/messages/it/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/it/index.ts +2 -0
- package/dist/templates/contents/themes/starter/messages/pt/dev.json +106 -0
- package/dist/templates/contents/themes/starter/messages/pt/index.ts +2 -0
- package/dist/templates/contents/themes/starter/styles/globals.css +14 -0
- package/dist/templates/instrumentation.ts +33 -0
- package/dist/types/blocks.d.ts +1 -1
- package/dist/types/blocks.d.ts.map +1 -1
- package/migrations/017_scheduled_actions_table.sql +21 -0
- package/migrations/021_media.sql +154 -0
- package/migrations/090_sample_data.sql +53 -0
- package/package.json +16 -15
- package/scripts/build/registry/config.mjs +41 -0
- package/scripts/build/registry/discovery/templates.mjs +0 -1
- package/scripts/build/registry/generators/entity-registry.mjs +16 -6
- package/scripts/build/registry/generators/route-handlers.mjs +8 -2
- package/scripts/build/registry/generators/template-registry.mjs +16 -4
- package/scripts/build/registry/post-build/route-cleanup.mjs +0 -1
- package/scripts/build/registry/validate-env.test.mjs +92 -0
- package/scripts/build/registry.mjs +18 -1
- package/scripts/deploy/vercel-deploy.mjs +1 -1
- package/templates/app/api/devtools/config/entities/route.ts +18 -11
- package/templates/app/api/devtools/config/theme/route.ts +5 -4
- package/templates/app/api/devtools/tests/[...path]/route.ts +6 -5
- package/templates/app/api/devtools/tests/route.ts +5 -4
- package/templates/app/api/health/route.ts +6 -4
- package/templates/app/api/internal/user-metadata/route.ts +3 -2
- package/templates/app/api/superadmin/subscriptions/route.ts +5 -6
- package/templates/app/api/superadmin/teams/[teamId]/route.ts +6 -7
- package/templates/app/api/superadmin/teams/route.ts +5 -6
- package/templates/app/api/superadmin/users/[userId]/route.ts +11 -16
- package/templates/app/api/superadmin/users/route.ts +9 -10
- package/templates/app/api/user/delete-account/route.ts +3 -2
- package/templates/app/api/user/plan-flags/route.ts +11 -24
- package/templates/app/api/user/profile/route.ts +7 -6
- package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +16 -18
- package/templates/app/api/v1/[entity]/[id]/child/[childType]/route.ts +17 -19
- package/templates/app/api/v1/[entity]/[id]/route.ts +10 -12
- package/templates/app/api/v1/[entity]/route.ts +9 -11
- package/templates/app/api/v1/api-keys/[id]/route.ts +9 -8
- package/templates/app/api/v1/api-keys/route.ts +7 -6
- package/templates/app/api/v1/auth/signup-with-invite/route.ts +3 -2
- package/templates/app/api/v1/billing/cancel/route.ts +15 -14
- package/templates/app/api/v1/billing/change-plan/route.ts +10 -9
- package/templates/app/api/v1/billing/check-action/route.ts +8 -7
- package/templates/app/api/v1/billing/checkout/route.ts +10 -9
- package/templates/app/api/v1/billing/plans/route.ts +5 -4
- package/templates/app/api/v1/billing/portal/route.ts +9 -8
- package/templates/app/api/v1/blocks/[slug]/route.ts +4 -3
- package/templates/app/api/v1/blocks/route.ts +3 -2
- package/templates/app/api/v1/blocks/validate/route.ts +5 -3
- package/templates/app/api/v1/cron/process/route.ts +4 -6
- package/templates/app/api/v1/devtools/blocks/route.ts +3 -2
- package/templates/app/api/v1/devtools/docs/route.ts +3 -2
- package/templates/app/api/v1/devtools/features/route.ts +3 -2
- package/templates/app/api/v1/devtools/flows/route.ts +3 -2
- package/templates/app/api/v1/devtools/scheduled-actions/route.ts +125 -3
- package/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +110 -0
- package/templates/app/api/v1/devtools/testing/route.ts +3 -2
- package/templates/app/api/v1/media/[id]/route.ts +144 -0
- package/templates/app/api/v1/media/[id]/tags/route.ts +154 -0
- package/templates/app/api/v1/media/check-duplicates/route.ts +56 -0
- package/templates/app/api/v1/media/route.ts +56 -0
- package/templates/app/api/v1/media/upload/route.ts +157 -33
- package/templates/app/api/v1/media-tags/route.ts +65 -0
- package/templates/app/api/v1/plugin/[...path]/route.ts +16 -15
- package/templates/app/api/v1/plugin/route.ts +3 -2
- package/templates/app/api/v1/post-categories/[id]/route.ts +10 -9
- package/templates/app/api/v1/post-categories/route.ts +5 -4
- package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +3 -3
- package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +3 -3
- package/templates/app/api/v1/team-invitations/[token]/route.ts +3 -2
- package/templates/app/api/v1/team-invitations/route.ts +3 -2
- package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +5 -4
- package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +3 -2
- package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +3 -2
- package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +5 -4
- package/templates/app/api/v1/teams/[teamId]/members/route.ts +5 -5
- package/templates/app/api/v1/teams/[teamId]/route.ts +31 -58
- package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +3 -2
- package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +5 -4
- package/templates/app/api/v1/teams/route.ts +18 -17
- package/templates/app/api/v1/teams/switch/route.ts +3 -2
- package/templates/app/api/v1/theme/[...path]/route.ts +16 -15
- package/templates/app/api/v1/theme/route.ts +3 -2
- package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +7 -6
- package/templates/app/api/v1/users/[id]/route.ts +9 -8
- package/templates/app/api/v1/users/route.ts +7 -6
- package/templates/app/dashboard/(main)/media/page.tsx +607 -0
- package/templates/contents/themes/starter/messages/de/dev.json +106 -0
- package/templates/contents/themes/starter/messages/de/index.ts +2 -0
- package/templates/contents/themes/starter/messages/en/dev.json +106 -0
- package/templates/contents/themes/starter/messages/en/index.ts +2 -0
- package/templates/contents/themes/starter/messages/es/dev.json +106 -0
- package/templates/contents/themes/starter/messages/es/index.ts +2 -0
- package/templates/contents/themes/starter/messages/fr/dev.json +106 -0
- package/templates/contents/themes/starter/messages/fr/index.ts +2 -0
- package/templates/contents/themes/starter/messages/it/dev.json +106 -0
- package/templates/contents/themes/starter/messages/it/index.ts +2 -0
- package/templates/contents/themes/starter/messages/pt/dev.json +106 -0
- package/templates/contents/themes/starter/messages/pt/index.ts +2 -0
- package/templates/contents/themes/starter/styles/globals.css +14 -0
- package/templates/instrumentation.ts +33 -0
- package/dist/presets/plugin/.env.example.template +0 -19
- package/dist/presets/plugin/entities/.gitkeep +0 -18
- package/dist/presets/theme/blocks/.gitkeep +0 -17
- package/dist/presets/theme/public/brand/.gitkeep +0 -8
- package/dist/presets/theme/tests/cypress/.gitkeep +0 -10
- package/dist/templates/contents/plugins/starter/plugin/.env.example.template +0 -19
- package/templates/contents/plugins/starter/plugin/.env.example.template +0 -19
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Biblioteca de Medios",
|
|
3
|
+
"subtitle": "Gestiona tus imágenes y videos",
|
|
4
|
+
"toolbar": {
|
|
5
|
+
"upload": "Subir",
|
|
6
|
+
"search": "Buscar archivos...",
|
|
7
|
+
"typeFilter": {
|
|
8
|
+
"all": "Todos los Tipos",
|
|
9
|
+
"images": "Imágenes",
|
|
10
|
+
"videos": "Videos"
|
|
11
|
+
},
|
|
12
|
+
"sort": {
|
|
13
|
+
"newest": "Más Recientes Primero",
|
|
14
|
+
"oldest": "Más Antiguos Primero",
|
|
15
|
+
"nameAsc": "Nombre A-Z",
|
|
16
|
+
"nameDesc": "Nombre Z-A",
|
|
17
|
+
"sizeDesc": "Más Grandes Primero",
|
|
18
|
+
"sizeAsc": "Más Pequeños Primero"
|
|
19
|
+
},
|
|
20
|
+
"viewGrid": "Vista de Cuadrícula",
|
|
21
|
+
"viewList": "Vista de Lista",
|
|
22
|
+
"columns": "Columnas"
|
|
23
|
+
},
|
|
24
|
+
"upload": {
|
|
25
|
+
"dragDrop": "Arrastra y suelta archivos aquí o",
|
|
26
|
+
"browse": "navega para subir",
|
|
27
|
+
"maxSize": "Tamaño máximo de archivo: {maxSize}MB",
|
|
28
|
+
"uploading": "Subiendo...",
|
|
29
|
+
"uploadingFile": "Subiendo {filename}...",
|
|
30
|
+
"success": "Archivo subido exitosamente",
|
|
31
|
+
"successMultiple": "{count} archivos subidos exitosamente",
|
|
32
|
+
"error": "Error al subir archivo",
|
|
33
|
+
"invalidType": "Tipo de archivo no permitido",
|
|
34
|
+
"tooLarge": "El archivo es demasiado grande",
|
|
35
|
+
"maxSelectionsReached": "Máximo {maxSelections} selecciones permitidas",
|
|
36
|
+
"duplicateFound": "{count, plural, one {# archivo ya existe} other {# archivos ya existen}} en tu biblioteca",
|
|
37
|
+
"duplicateConfirm": "¿Subir de todos modos?",
|
|
38
|
+
"duplicateSkip": "Omitir duplicados",
|
|
39
|
+
"duplicateUploadAll": "Subir Todos"
|
|
40
|
+
},
|
|
41
|
+
"grid": {
|
|
42
|
+
"selected": "Seleccionado",
|
|
43
|
+
"dimensions": "{width} x {height}",
|
|
44
|
+
"noResults": "No se encontraron medios",
|
|
45
|
+
"loading": "Cargando medios..."
|
|
46
|
+
},
|
|
47
|
+
"list": {
|
|
48
|
+
"filename": "Nombre de Archivo",
|
|
49
|
+
"type": "Tipo",
|
|
50
|
+
"size": "Tamaño",
|
|
51
|
+
"dimensions": "Dimensiones",
|
|
52
|
+
"uploaded": "Subido",
|
|
53
|
+
"actions": "Acciones"
|
|
54
|
+
},
|
|
55
|
+
"detail": {
|
|
56
|
+
"title": "Detalles del Medio",
|
|
57
|
+
"titleLabel": "Título",
|
|
58
|
+
"titlePlaceholder": "Dale un título a este archivo...",
|
|
59
|
+
"titleDescription": "Nombre de visualización opcional para este medio",
|
|
60
|
+
"altLabel": "Texto Alternativo",
|
|
61
|
+
"altPlaceholder": "Describe esta imagen para accesibilidad...",
|
|
62
|
+
"altDescription": "Texto alternativo para lectores de pantalla y SEO",
|
|
63
|
+
"captionLabel": "Leyenda",
|
|
64
|
+
"captionPlaceholder": "Añade una leyenda...",
|
|
65
|
+
"captionDescription": "Descripción opcional mostrada debajo del medio",
|
|
66
|
+
"save": "Guardar Cambios",
|
|
67
|
+
"saving": "Guardando...",
|
|
68
|
+
"saved": "Cambios guardados",
|
|
69
|
+
"cancel": "Cancelar",
|
|
70
|
+
"info": {
|
|
71
|
+
"filename": "Nombre de Archivo",
|
|
72
|
+
"fileSize": "Tamaño de Archivo",
|
|
73
|
+
"mimeType": "Tipo",
|
|
74
|
+
"dimensions": "Dimensiones",
|
|
75
|
+
"uploadedBy": "Subido por",
|
|
76
|
+
"uploadedAt": "Subido",
|
|
77
|
+
"url": "URL"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"footer": {
|
|
81
|
+
"itemsSelected": "{count} elemento seleccionado",
|
|
82
|
+
"itemsSelectedPlural": "{count} elementos seleccionados",
|
|
83
|
+
"cancel": "Cancelar",
|
|
84
|
+
"select": "Seleccionar"
|
|
85
|
+
},
|
|
86
|
+
"selector": {
|
|
87
|
+
"selectMedia": "Seleccionar Medio",
|
|
88
|
+
"change": "Cambiar",
|
|
89
|
+
"remove": "Eliminar",
|
|
90
|
+
"noSelection": "Ningún medio seleccionado"
|
|
91
|
+
},
|
|
92
|
+
"empty": {
|
|
93
|
+
"title": "Aún no hay archivos de medios",
|
|
94
|
+
"description": "Sube imágenes o videos para comenzar",
|
|
95
|
+
"uploadBtn": "Subir Archivos"
|
|
96
|
+
},
|
|
97
|
+
"delete": {
|
|
98
|
+
"title": "Eliminar Medio",
|
|
99
|
+
"message": "¿Estás seguro de que deseas eliminar este archivo de medios? Esta acción no se puede deshacer.",
|
|
100
|
+
"confirm": "Eliminar",
|
|
101
|
+
"cancel": "Cancelar",
|
|
102
|
+
"success": "Medio eliminado exitosamente",
|
|
103
|
+
"error": "Error al eliminar medio"
|
|
104
|
+
},
|
|
105
|
+
"errors": {
|
|
106
|
+
"loadFailed": "Error al cargar medios",
|
|
107
|
+
"unauthorized": "No tienes permiso para acceder a los medios",
|
|
108
|
+
"notFound": "Medio no encontrado",
|
|
109
|
+
"uploadFailed": "Error en la subida: {error}"
|
|
110
|
+
},
|
|
111
|
+
"actions": {
|
|
112
|
+
"edit": "Editar",
|
|
113
|
+
"delete": "Eliminar",
|
|
114
|
+
"select": "Seleccionar",
|
|
115
|
+
"cancel": "Cancelar",
|
|
116
|
+
"save": "Guardar"
|
|
117
|
+
},
|
|
118
|
+
"dashboard": {
|
|
119
|
+
"subtitle": "{count, plural, =0 {Sin archivos} one {# archivo} other {# archivos}} en tu biblioteca",
|
|
120
|
+
"selected": "{count, plural, one {# seleccionado} other {# seleccionados}}",
|
|
121
|
+
"bulkDelete": "Eliminar",
|
|
122
|
+
"bulkDeleteConfirm": "¿Eliminar {count, plural, one {# archivo} other {# archivos}}?",
|
|
123
|
+
"bulkDeleteConfirmDesc": "Esta acción no se puede deshacer. Los archivos se eliminarán permanentemente.",
|
|
124
|
+
"bulkDeleting": "Eliminando {current} de {total}...",
|
|
125
|
+
"bulkDeleteSuccess": "{count, plural, one {# archivo eliminado} other {# archivos eliminados}}",
|
|
126
|
+
"deselectAll": "Deseleccionar todo",
|
|
127
|
+
"hideUpload": "Ocultar Subida",
|
|
128
|
+
"clearSelection": "Limpiar",
|
|
129
|
+
"pagination": "Mostrando {from}-{to} de {total}",
|
|
130
|
+
"prevPage": "Anterior",
|
|
131
|
+
"nextPage": "Siguiente",
|
|
132
|
+
"tags": "Etiquetas",
|
|
133
|
+
"allTags": "Todas las Etiquetas",
|
|
134
|
+
"filterByTag": "Filtrar por etiqueta...",
|
|
135
|
+
"noTags": "Sin etiquetas"
|
|
136
|
+
},
|
|
137
|
+
"tags": {
|
|
138
|
+
"title": "Etiquetas",
|
|
139
|
+
"add": "Añadir Etiqueta",
|
|
140
|
+
"remove": "Eliminar",
|
|
141
|
+
"create": "Crear Etiqueta",
|
|
142
|
+
"createPlaceholder": "Nombre de nueva etiqueta...",
|
|
143
|
+
"applied": "Etiqueta añadida",
|
|
144
|
+
"removed": "Etiqueta eliminada",
|
|
145
|
+
"empty": "Sin etiquetas asignadas"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -278,6 +278,8 @@
|
|
|
278
278
|
"loading": "Chargement des actions programmees...",
|
|
279
279
|
"empty": "Aucune action programmee trouvee",
|
|
280
280
|
"emptyDescription": "Les actions programmees apparaitront ici lorsqu'elles seront creees",
|
|
281
|
+
"failedNotification": "{count, plural, one {# action a echoue} other {# actions ont echoue}} au cours des 24 dernieres heures",
|
|
282
|
+
"viewFailed": "Voir les echecs",
|
|
281
283
|
"filters": {
|
|
282
284
|
"status": "Statut",
|
|
283
285
|
"allStatuses": "Tous les statuts",
|
|
@@ -289,12 +291,26 @@
|
|
|
289
291
|
"table": {
|
|
290
292
|
"type": "Type",
|
|
291
293
|
"status": "Statut",
|
|
294
|
+
"attempts": "Tentatives",
|
|
292
295
|
"scheduledAt": "Programme pour",
|
|
296
|
+
"startedAt": "Demarre",
|
|
297
|
+
"completedAt": "Termine",
|
|
293
298
|
"team": "Equipe",
|
|
294
299
|
"payload": "Donnees",
|
|
295
300
|
"error": "Erreur",
|
|
301
|
+
"actions": "Actions",
|
|
296
302
|
"noTeam": "Global"
|
|
297
303
|
},
|
|
304
|
+
"retry": {
|
|
305
|
+
"button": "Reessayer",
|
|
306
|
+
"success": "Action programmee pour reessai",
|
|
307
|
+
"error": "Echec du reessai de l'action: {message}"
|
|
308
|
+
},
|
|
309
|
+
"run": {
|
|
310
|
+
"button": "Executer maintenant",
|
|
311
|
+
"success": "Action executee avec succes",
|
|
312
|
+
"error": "Echec de l'execution de l'action: {message}"
|
|
313
|
+
},
|
|
298
314
|
"status": {
|
|
299
315
|
"pending": "En attente",
|
|
300
316
|
"running": "En cours",
|
|
@@ -991,6 +991,8 @@ declare const _default: {
|
|
|
991
991
|
loading: string;
|
|
992
992
|
empty: string;
|
|
993
993
|
emptyDescription: string;
|
|
994
|
+
failedNotification: string;
|
|
995
|
+
viewFailed: string;
|
|
994
996
|
filters: {
|
|
995
997
|
status: string;
|
|
996
998
|
allStatuses: string;
|
|
@@ -1002,12 +1004,26 @@ declare const _default: {
|
|
|
1002
1004
|
table: {
|
|
1003
1005
|
type: string;
|
|
1004
1006
|
status: string;
|
|
1007
|
+
attempts: string;
|
|
1005
1008
|
scheduledAt: string;
|
|
1009
|
+
startedAt: string;
|
|
1010
|
+
completedAt: string;
|
|
1006
1011
|
team: string;
|
|
1007
1012
|
payload: string;
|
|
1008
1013
|
error: string;
|
|
1014
|
+
actions: string;
|
|
1009
1015
|
noTeam: string;
|
|
1010
1016
|
};
|
|
1017
|
+
retry: {
|
|
1018
|
+
button: string;
|
|
1019
|
+
success: string;
|
|
1020
|
+
error: string;
|
|
1021
|
+
};
|
|
1022
|
+
run: {
|
|
1023
|
+
button: string;
|
|
1024
|
+
success: string;
|
|
1025
|
+
error: string;
|
|
1026
|
+
};
|
|
1011
1027
|
status: {
|
|
1012
1028
|
pending: string;
|
|
1013
1029
|
running: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/fr/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/fr/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoBU"}
|
|
@@ -278,6 +278,8 @@
|
|
|
278
278
|
"loading": "Caricamento azioni programmate...",
|
|
279
279
|
"empty": "Nessuna azione programmata trovata",
|
|
280
280
|
"emptyDescription": "Le azioni programmate appariranno qui quando verranno create",
|
|
281
|
+
"failedNotification": "{count, plural, one {# azione fallita} other {# azioni fallite}} nelle ultime 24 ore",
|
|
282
|
+
"viewFailed": "Vedi fallite",
|
|
281
283
|
"filters": {
|
|
282
284
|
"status": "Stato",
|
|
283
285
|
"allStatuses": "Tutti gli Stati",
|
|
@@ -289,12 +291,26 @@
|
|
|
289
291
|
"table": {
|
|
290
292
|
"type": "Tipo",
|
|
291
293
|
"status": "Stato",
|
|
294
|
+
"attempts": "Tentativi",
|
|
292
295
|
"scheduledAt": "Programmato Per",
|
|
296
|
+
"startedAt": "Iniziato",
|
|
297
|
+
"completedAt": "Completato",
|
|
293
298
|
"team": "Team",
|
|
294
299
|
"payload": "Dati",
|
|
295
300
|
"error": "Errore",
|
|
301
|
+
"actions": "Azioni",
|
|
296
302
|
"noTeam": "Globale"
|
|
297
303
|
},
|
|
304
|
+
"retry": {
|
|
305
|
+
"button": "Riprova",
|
|
306
|
+
"success": "Azione programmata per il ritentativo",
|
|
307
|
+
"error": "Errore nel ritentativo dell'azione: {message}"
|
|
308
|
+
},
|
|
309
|
+
"run": {
|
|
310
|
+
"button": "Esegui ora",
|
|
311
|
+
"success": "Azione eseguita con successo",
|
|
312
|
+
"error": "Errore nell'esecuzione dell'azione: {message}"
|
|
313
|
+
},
|
|
298
314
|
"status": {
|
|
299
315
|
"pending": "In Attesa",
|
|
300
316
|
"running": "In Esecuzione",
|
|
@@ -991,6 +991,8 @@ declare const _default: {
|
|
|
991
991
|
loading: string;
|
|
992
992
|
empty: string;
|
|
993
993
|
emptyDescription: string;
|
|
994
|
+
failedNotification: string;
|
|
995
|
+
viewFailed: string;
|
|
994
996
|
filters: {
|
|
995
997
|
status: string;
|
|
996
998
|
allStatuses: string;
|
|
@@ -1002,12 +1004,26 @@ declare const _default: {
|
|
|
1002
1004
|
table: {
|
|
1003
1005
|
type: string;
|
|
1004
1006
|
status: string;
|
|
1007
|
+
attempts: string;
|
|
1005
1008
|
scheduledAt: string;
|
|
1009
|
+
startedAt: string;
|
|
1010
|
+
completedAt: string;
|
|
1006
1011
|
team: string;
|
|
1007
1012
|
payload: string;
|
|
1008
1013
|
error: string;
|
|
1014
|
+
actions: string;
|
|
1009
1015
|
noTeam: string;
|
|
1010
1016
|
};
|
|
1017
|
+
retry: {
|
|
1018
|
+
button: string;
|
|
1019
|
+
success: string;
|
|
1020
|
+
error: string;
|
|
1021
|
+
};
|
|
1022
|
+
run: {
|
|
1023
|
+
button: string;
|
|
1024
|
+
success: string;
|
|
1025
|
+
error: string;
|
|
1026
|
+
};
|
|
1011
1027
|
status: {
|
|
1012
1028
|
pending: string;
|
|
1013
1029
|
running: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/it/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/it/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoBU"}
|
|
@@ -278,6 +278,8 @@
|
|
|
278
278
|
"loading": "Carregando acoes agendadas...",
|
|
279
279
|
"empty": "Nenhuma acao agendada encontrada",
|
|
280
280
|
"emptyDescription": "As acoes agendadas aparecerao aqui quando forem criadas",
|
|
281
|
+
"failedNotification": "{count, plural, one {# acao falhou} other {# acoes falharam}} nas ultimas 24 horas",
|
|
282
|
+
"viewFailed": "Ver falhas",
|
|
281
283
|
"filters": {
|
|
282
284
|
"status": "Status",
|
|
283
285
|
"allStatuses": "Todos os Status",
|
|
@@ -289,12 +291,26 @@
|
|
|
289
291
|
"table": {
|
|
290
292
|
"type": "Tipo",
|
|
291
293
|
"status": "Status",
|
|
294
|
+
"attempts": "Tentativas",
|
|
292
295
|
"scheduledAt": "Agendado Para",
|
|
296
|
+
"startedAt": "Iniciado",
|
|
297
|
+
"completedAt": "Concluido",
|
|
293
298
|
"team": "Equipe",
|
|
294
299
|
"payload": "Dados",
|
|
295
300
|
"error": "Erro",
|
|
301
|
+
"actions": "Acoes",
|
|
296
302
|
"noTeam": "Global"
|
|
297
303
|
},
|
|
304
|
+
"retry": {
|
|
305
|
+
"button": "Tentar novamente",
|
|
306
|
+
"success": "Acao agendada para nova tentativa",
|
|
307
|
+
"error": "Falha ao tentar novamente a acao: {message}"
|
|
308
|
+
},
|
|
309
|
+
"run": {
|
|
310
|
+
"button": "Executar agora",
|
|
311
|
+
"success": "Acao executada com sucesso",
|
|
312
|
+
"error": "Falha ao executar a acao: {message}"
|
|
313
|
+
},
|
|
298
314
|
"status": {
|
|
299
315
|
"pending": "Pendente",
|
|
300
316
|
"running": "Executando",
|
|
@@ -991,6 +991,8 @@ declare const _default: {
|
|
|
991
991
|
loading: string;
|
|
992
992
|
empty: string;
|
|
993
993
|
emptyDescription: string;
|
|
994
|
+
failedNotification: string;
|
|
995
|
+
viewFailed: string;
|
|
994
996
|
filters: {
|
|
995
997
|
status: string;
|
|
996
998
|
allStatuses: string;
|
|
@@ -1002,12 +1004,26 @@ declare const _default: {
|
|
|
1002
1004
|
table: {
|
|
1003
1005
|
type: string;
|
|
1004
1006
|
status: string;
|
|
1007
|
+
attempts: string;
|
|
1005
1008
|
scheduledAt: string;
|
|
1009
|
+
startedAt: string;
|
|
1010
|
+
completedAt: string;
|
|
1006
1011
|
team: string;
|
|
1007
1012
|
payload: string;
|
|
1008
1013
|
error: string;
|
|
1014
|
+
actions: string;
|
|
1009
1015
|
noTeam: string;
|
|
1010
1016
|
};
|
|
1017
|
+
retry: {
|
|
1018
|
+
button: string;
|
|
1019
|
+
success: string;
|
|
1020
|
+
error: string;
|
|
1021
|
+
};
|
|
1022
|
+
run: {
|
|
1023
|
+
button: string;
|
|
1024
|
+
success: string;
|
|
1025
|
+
error: string;
|
|
1026
|
+
};
|
|
1011
1027
|
status: {
|
|
1012
1028
|
pending: string;
|
|
1013
1029
|
running: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/pt/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/pt/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoBU"}
|
|
@@ -32,7 +32,10 @@ CREATE TABLE IF NOT EXISTS public."scheduled_actions" (
|
|
|
32
32
|
"completedAt" TIMESTAMPTZ,
|
|
33
33
|
"errorMessage" TEXT,
|
|
34
34
|
attempts INTEGER NOT NULL DEFAULT 0,
|
|
35
|
+
"maxRetries" INTEGER NOT NULL DEFAULT 3,
|
|
35
36
|
"recurringInterval" TEXT,
|
|
37
|
+
"recurrenceType" TEXT,
|
|
38
|
+
"lockGroup" TEXT,
|
|
36
39
|
|
|
37
40
|
-- System fields (always last)
|
|
38
41
|
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
@@ -49,7 +52,10 @@ COMMENT ON COLUMN public."scheduled_actions"."startedAt" IS 'When execut
|
|
|
49
52
|
COMMENT ON COLUMN public."scheduled_actions"."completedAt" IS 'When execution finished';
|
|
50
53
|
COMMENT ON COLUMN public."scheduled_actions"."errorMessage" IS 'Error details if action failed';
|
|
51
54
|
COMMENT ON COLUMN public."scheduled_actions".attempts IS 'Number of execution attempts';
|
|
55
|
+
COMMENT ON COLUMN public."scheduled_actions"."maxRetries" IS 'Maximum number of retry attempts before marking action as failed. Default: 3';
|
|
52
56
|
COMMENT ON COLUMN public."scheduled_actions"."recurringInterval" IS 'Recurrence pattern: hourly, daily, weekly, or cron expression';
|
|
57
|
+
COMMENT ON COLUMN public."scheduled_actions"."recurrenceType" IS 'Recurrence calculation type: "fixed" (calculate from scheduledAt to prevent drift) or "rolling" (calculate from completion time for consistent intervals)';
|
|
58
|
+
COMMENT ON COLUMN public."scheduled_actions"."lockGroup" IS 'Lock group key for parallel execution control. Actions with same lockGroup run sequentially';
|
|
53
59
|
|
|
54
60
|
-- ============================================
|
|
55
61
|
-- TRIGGER updatedAt (uses Better Auth function)
|
|
@@ -84,6 +90,21 @@ CREATE INDEX IF NOT EXISTS idx_scheduled_actions_completed_at
|
|
|
84
90
|
CREATE INDEX IF NOT EXISTS idx_scheduled_actions_created_at
|
|
85
91
|
ON public."scheduled_actions"("createdAt" DESC);
|
|
86
92
|
|
|
93
|
+
-- Lock group for parallel execution control
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_actions_lock_group
|
|
95
|
+
ON public."scheduled_actions"("lockGroup")
|
|
96
|
+
WHERE "lockGroup" IS NOT NULL;
|
|
97
|
+
|
|
98
|
+
-- Retry status filtering (queries checking retry eligibility)
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_actions_retry_status
|
|
100
|
+
ON public."scheduled_actions"(attempts, "maxRetries")
|
|
101
|
+
WHERE status = 'pending';
|
|
102
|
+
|
|
103
|
+
-- Recurrence type filtering (for recurring actions)
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_actions_recurrence_type
|
|
105
|
+
ON public."scheduled_actions"("recurrenceType")
|
|
106
|
+
WHERE "recurringInterval" IS NOT NULL;
|
|
107
|
+
|
|
87
108
|
-- ============================================
|
|
88
109
|
-- RLS
|
|
89
110
|
-- ============================================
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
-- Migration: 021_media.sql
|
|
2
|
+
-- Description: Media library table, full-text search, cleanup trigger, and default media tags
|
|
3
|
+
-- Date: 2026-02-06
|
|
4
|
+
|
|
5
|
+
-- ============================================
|
|
6
|
+
-- TABLE
|
|
7
|
+
-- ============================================
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS public."media" (
|
|
10
|
+
-- Primary Key
|
|
11
|
+
id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
|
|
12
|
+
|
|
13
|
+
-- Relational Fields
|
|
14
|
+
"userId" TEXT NOT NULL REFERENCES public."users"(id) ON DELETE CASCADE,
|
|
15
|
+
"teamId" TEXT NOT NULL REFERENCES public."teams"(id) ON DELETE CASCADE,
|
|
16
|
+
|
|
17
|
+
-- File metadata (immutable after upload)
|
|
18
|
+
url TEXT NOT NULL,
|
|
19
|
+
filename TEXT NOT NULL,
|
|
20
|
+
"fileSize" BIGINT NOT NULL,
|
|
21
|
+
"mimeType" TEXT NOT NULL,
|
|
22
|
+
|
|
23
|
+
-- Image-specific (null for non-images)
|
|
24
|
+
width INTEGER,
|
|
25
|
+
height INTEGER,
|
|
26
|
+
|
|
27
|
+
-- User-editable metadata
|
|
28
|
+
title TEXT,
|
|
29
|
+
alt TEXT,
|
|
30
|
+
caption TEXT,
|
|
31
|
+
|
|
32
|
+
-- Full-text search
|
|
33
|
+
"searchVector" tsvector,
|
|
34
|
+
|
|
35
|
+
-- Status
|
|
36
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
37
|
+
|
|
38
|
+
-- System fields
|
|
39
|
+
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
40
|
+
"updatedAt" TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
41
|
+
|
|
42
|
+
-- Constraints
|
|
43
|
+
CONSTRAINT media_status_check CHECK (status IN ('active', 'deleted')),
|
|
44
|
+
CONSTRAINT media_filename_length CHECK (length(filename) <= 255),
|
|
45
|
+
CONSTRAINT media_title_length CHECK (title IS NULL OR length(title) <= 255),
|
|
46
|
+
CONSTRAINT media_alt_length CHECK (alt IS NULL OR length(alt) <= 500),
|
|
47
|
+
CONSTRAINT media_caption_length CHECK (caption IS NULL OR length(caption) <= 1000),
|
|
48
|
+
CONSTRAINT media_file_size_positive CHECK ("fileSize" > 0),
|
|
49
|
+
CONSTRAINT media_dimensions_positive CHECK (
|
|
50
|
+
(width IS NULL OR width > 0) AND
|
|
51
|
+
(height IS NULL OR height > 0)
|
|
52
|
+
)
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
COMMENT ON TABLE public."media" IS 'Media library - tracks uploaded files with metadata and team isolation';
|
|
56
|
+
COMMENT ON COLUMN public."media"."userId" IS 'User who uploaded the file';
|
|
57
|
+
COMMENT ON COLUMN public."media"."teamId" IS 'Team context for isolation';
|
|
58
|
+
COMMENT ON COLUMN public."media".url IS 'Full URL to file (Vercel Blob or local storage)';
|
|
59
|
+
COMMENT ON COLUMN public."media".filename IS 'Original filename (sanitized)';
|
|
60
|
+
COMMENT ON COLUMN public."media"."fileSize" IS 'File size in bytes';
|
|
61
|
+
COMMENT ON COLUMN public."media"."mimeType" IS 'MIME type (e.g., image/jpeg, video/mp4)';
|
|
62
|
+
COMMENT ON COLUMN public."media".width IS 'Image width in pixels (null for non-images)';
|
|
63
|
+
COMMENT ON COLUMN public."media".height IS 'Image height in pixels (null for non-images)';
|
|
64
|
+
COMMENT ON COLUMN public."media".title IS 'User-defined title (optional, defaults to filename in UI)';
|
|
65
|
+
COMMENT ON COLUMN public."media".alt IS 'Alt text for accessibility/SEO';
|
|
66
|
+
COMMENT ON COLUMN public."media".caption IS 'Caption or description';
|
|
67
|
+
COMMENT ON COLUMN public."media".status IS 'active or deleted (soft delete)';
|
|
68
|
+
|
|
69
|
+
-- ============================================
|
|
70
|
+
-- TRIGGER updatedAt
|
|
71
|
+
-- ============================================
|
|
72
|
+
DROP TRIGGER IF EXISTS media_set_updated_at ON public."media";
|
|
73
|
+
CREATE TRIGGER media_set_updated_at
|
|
74
|
+
BEFORE UPDATE ON public."media"
|
|
75
|
+
FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
|
|
76
|
+
|
|
77
|
+
-- ============================================
|
|
78
|
+
-- FULL-TEXT SEARCH TRIGGER
|
|
79
|
+
-- ============================================
|
|
80
|
+
CREATE OR REPLACE FUNCTION public.media_search_vector_update()
|
|
81
|
+
RETURNS TRIGGER AS $$
|
|
82
|
+
BEGIN
|
|
83
|
+
NEW."searchVector" := to_tsvector('english',
|
|
84
|
+
coalesce(NEW.title, '') || ' ' ||
|
|
85
|
+
coalesce(NEW.filename, '') || ' ' ||
|
|
86
|
+
coalesce(NEW.alt, '') || ' ' ||
|
|
87
|
+
coalesce(NEW.caption, '')
|
|
88
|
+
);
|
|
89
|
+
RETURN NEW;
|
|
90
|
+
END;
|
|
91
|
+
$$ LANGUAGE plpgsql;
|
|
92
|
+
|
|
93
|
+
DROP TRIGGER IF EXISTS media_search_vector_trigger ON public."media";
|
|
94
|
+
CREATE TRIGGER media_search_vector_trigger
|
|
95
|
+
BEFORE INSERT OR UPDATE OF title, filename, alt, caption ON public."media"
|
|
96
|
+
FOR EACH ROW
|
|
97
|
+
EXECUTE FUNCTION public.media_search_vector_update();
|
|
98
|
+
|
|
99
|
+
-- ============================================
|
|
100
|
+
-- INDEXES
|
|
101
|
+
-- ============================================
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_media_user_id ON public."media"("userId");
|
|
103
|
+
CREATE INDEX IF NOT EXISTS idx_media_team_id ON public."media"("teamId");
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_media_user_team ON public."media"("userId", "teamId");
|
|
105
|
+
CREATE INDEX IF NOT EXISTS idx_media_team_created ON public."media"("teamId", "createdAt" DESC);
|
|
106
|
+
CREATE INDEX IF NOT EXISTS idx_media_status ON public."media"(status);
|
|
107
|
+
CREATE INDEX IF NOT EXISTS idx_media_mime_type ON public."media"("mimeType");
|
|
108
|
+
CREATE INDEX IF NOT EXISTS idx_media_filename ON public."media"(filename);
|
|
109
|
+
CREATE INDEX IF NOT EXISTS idx_media_team_status ON public."media"("teamId", status);
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_media_filename_lower ON public."media"(lower(filename));
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_media_search_vector ON public."media" USING GIN ("searchVector");
|
|
112
|
+
|
|
113
|
+
-- ============================================
|
|
114
|
+
-- RLS
|
|
115
|
+
-- ============================================
|
|
116
|
+
ALTER TABLE public."media" ENABLE ROW LEVEL SECURITY;
|
|
117
|
+
|
|
118
|
+
DROP POLICY IF EXISTS "Media team can do all" ON public."media";
|
|
119
|
+
|
|
120
|
+
CREATE POLICY "Media team can do all"
|
|
121
|
+
ON public."media"
|
|
122
|
+
FOR ALL TO authenticated
|
|
123
|
+
USING (
|
|
124
|
+
public.is_superadmin()
|
|
125
|
+
OR
|
|
126
|
+
"teamId" = ANY(public.get_user_team_ids())
|
|
127
|
+
)
|
|
128
|
+
WITH CHECK (
|
|
129
|
+
public.is_superadmin()
|
|
130
|
+
OR
|
|
131
|
+
"teamId" = ANY(public.get_user_team_ids())
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
-- ============================================
|
|
135
|
+
-- CLEANUP TRIGGER for media -> entity_taxonomy_relations
|
|
136
|
+
-- ============================================
|
|
137
|
+
-- When a media item is deleted, remove its taxonomy relations
|
|
138
|
+
DROP TRIGGER IF EXISTS cleanup_media_entity_taxonomy ON public."media";
|
|
139
|
+
|
|
140
|
+
DO $$
|
|
141
|
+
BEGIN
|
|
142
|
+
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'entity_taxonomy_relations' AND table_schema = 'public') THEN
|
|
143
|
+
CREATE TRIGGER cleanup_media_entity_taxonomy
|
|
144
|
+
AFTER DELETE ON public."media"
|
|
145
|
+
FOR EACH ROW
|
|
146
|
+
EXECUTE FUNCTION public.cleanup_entity_taxonomy_relations('media');
|
|
147
|
+
END IF;
|
|
148
|
+
END $$;
|
|
149
|
+
|
|
150
|
+
-- ============================================
|
|
151
|
+
-- MEDIA TAGS
|
|
152
|
+
-- ============================================
|
|
153
|
+
-- No default media tags are seeded.
|
|
154
|
+
-- Users create their own tags on-the-fly via the media detail panel.
|