gcego/data
gcego/data is a lightweight Laravel/PHP package for working with structured data. It offers a fluent API for transforming, validating, and organizing data, helping developers keep application logic clean and maintainable, with sensible defaults and straightforward integration into existing projects.
gcego/data is a Laravel-native, domain-agnostic data access and query engine that fits applications needing a unified read/write layer over Eloquent models, database tables, query builders, collections, and class-based providers. It is strongest for multi-tenant SaaS or internal platforms that need consistent filtering, search, sorting, pagination, relation handling, field-level security, caching, transactions, and audit events. It is likely overkill for simple CRUD apps with narrow query needs.illuminate/validation ^13.0, and psr/log ^3.0. Installation is standard Composer plus config publishing in console. The typed Source::define() API centralizes data definitions, and the Data facade gives a single entry point for queries, aggregates, scoped queries, and mutations. The package now depends only on gcego/core ^1.0, reducing coupling to the broader GCEGO ecosystem.new Source(...), legacy source factory methods, Property, Support\Callback, Paginate, legacy Sort/Sortable, Search, With, Includable, ->named(), FilterOperator/ValueType enums, and CustomOperator. Existing gcego/blueprints, gcego/registry, and Integration\SourceRenderer integrations are removed. Custom providers must adapt to the changed ResolvesRecords::find() signature. Security behavior around tenancy, field access, mutations, and cache isolation is high-impact and must be validated carefully.User, Tenant, or Shared? What is the support and release cadence for gcego/core? Do our databases support the new statement timeouts? What is the migration effort from any pre-1.0 usage? What performance overhead do caching, profiling, authorization, and transforms add?cache, transactions, performance, and events, so platform teams can tune behavior per environment.docs/migration.md and replace legacy Source construction, filter definitions, removed support classes, and custom operators/providers. For replacing existing repositories, use a strangler pattern: wrap current query methods behind sources, run parallel paths, and cut over domain by domain.ResolvesRecords::find() must add the fifth $aggregates parameter. Custom operators must move to Contracts\CustomOperator and filter value types to Contracts\FilterValueType. Any prior gcego/blueprints or gcego/registry integration must be redesigned because that integration is removed.gcego/data and gcego/core. 3) Define one non-critical read source with Source::define() and typed definitions. 4) Add filtering, search, sorting, pagination, and relations. 5) Add tenant scoping and field-level security. 6) Enable profiling and slow-query diagnostics. 7) Add query caching and invalidation tests. 8) Introduce mutations and transactions behind feature flags. 9) Migrate custom providers/operators. 10) Run security, performance, and failure-mode tests before broad rollout.gcego/data and gcego/core versions and track upgrades deliberately; the pre-1.0 to 1.0 break indicates meaningful API churn. Custom operators, filters, providers, and field-security rules need clear ownership.gcego/core, so confirm vendor support expectations, release cadence, and security response process. Internal support will need documentation for source definitions, tenant resolution, field access rules, cache invalidation, and transaction retry behavior. Laravel 13 upgrade timing should be tracked closely.User/Tenant/Shared isolation, stampede locks, pagination offsets, collection item limits, and statement timeouts. Profiling and N+1 detection help control query growth. Note that authorization, field rules, and transforms still run on every caller even when cached, so cache wins must be measured against security overhead.MutationException; deadlocks and serialization failures may retry with backoff; cache invalidation depends on version tokens, model events, and Data::invalidate(). Lazy-loading prevention on returned models may break code that relies on implicit lazy loads. Relation depth and search field limits may require query redesign. Misconfigured field security can hide or reject fields unexpectedly. Build runbooks for 403/503 responses, cache invalidation, transaction retries, and field-access changes.How can I help you explore Laravel packages today?