Type-safe fluent builder for portable query schemas. Runtime-agnostic, database-agnostic — the same QuerySchema drives Drizzle, Kysely, db0, or raw SQL.
AntelopeJS interface for database-agnostic query operations
Adapter-agnostic query filter parser for kavach
Driver-agnostic query engine and client runtime for VibeORM
Adapter-agnostic query helpers with typed pagination
Simple and powerful database-agnostic query builder (SQL & NoSQL)
Framework-agnostic query builder for REST APIs - build complex queries with filtering, relations, and pagination for both frontend and backend
Persistence-agnostic query DSL with typed filter, sort, projection and pagination primitives.
Framework-agnostic query cache & fetch registry (MFE friendly).
Framework-agnostic query client core
Framework agnostic query language.
A router-agnostic query-string management hook for React with Zod validation
Hooks for managing, caching and syncing asynchronous and remote data in Vue
Reactive utilities for Embla Carousel
A lightweight carousel library with fluid motion and great swipe precision
A lightweight carousel library with fluid motion and great swipe precision
Positioning library for floating elements: tooltips, popovers, dropdowns, and more
A type-safe, DB-agnostic query builder for TypeScript inspired by LINQ. Build database queries with a fluent API that works across Prisma, TypeORM, and more.
Signals for managing, caching and syncing asynchronous and remote data in Angular
Framework-agnostic testing tools for Kefir
Hooks for managing, caching and syncing asynchronous and remote data in React
Queue for messages and jobs based on Redis
Async hook
The platform-agnostic core of `react-spring`
A framework agnostic browser detection and querying helper.
Move query code from ActiveRecord models into query objects, because database query code do not belong in the model.
Use one CLI for multiple LLM providers with aliases, fallback routing, and structured output options
Human Query Language for full text search engines. Provides a lenient parser and associated tools for a self-contained and search-engine agnostic query language suitable for use by end users. Lenient in that is will produce a parse tree for any input, given a default operator and by generally ignoring any unparsable syntax. Suitable for use by end users in that it supports potentially several operator variants and a query language not unlike some major web search and other commercial search engines.
Automated metrics reporting via email
A comprehensive Rails generator that creates complete API resources with models, controllers, tests, and realistic seed data. Features automatic URL query string filtering and scoping using the has_scope gem with support for all data types and database-agnostic implementation.
Verifica is Ruby's most scalable authorization solution, ready to handle sophisticated authorization rules. Verifica is framework and database agnostic and designed around Access Control Lists. ACL powers a straightforward and unified authorization flow for any user and resource, regardless of how tricky the authorization rules are. Verifica aims to solve the issue when authorization rules become too complex to be expressed in a single SQL query. And at the same time the database is too big to execute these rules in the application code.
Kinship is a schema-inferred relationship graph for Ruby applications. It automatically discovers parent/child relationships between models by inspecting attributes (e.g. user_id, post_id) and builds a complete in-memory graph with zero configuration. Kinship enables deep relationship traversal, automatic join planning, and eliminates common N+1 query patterns without requiring has_many or belongs_to declarations. It is framework-agnostic and works with Rails, Jetski, and custom ORMs.
Sinja is a Sinatra extension for quickly building RESTful, {json:api}-compliant web services, leveraging the excellent JSONAPI::Serializers gem for payload serialization. It enhances Sinatra's DSL to enable resource-, relationship-, and role-centric API development, and it configures Sinatra with the proper settings, MIME-types, filters, conditions, and error-handling. There are many parsing (deserializing), rendering (serializing), and other "JSON API" libraries available for Ruby, but relatively few that attempt to correctly implement the entire {json:api} server specification, including routing, request header and query parameter checking, and relationship side-loading. Sinja lets you focus on the business logic of your applications without worrying about the specification, and without pulling in a heavy framework like Rails. It's lightweight, ORM-agnostic, and Ember.js-friendly!
== README.md: #ScheduledResource This gem is for displaying how things are used over time -- a schedule for a set of "resources". You can configure the elements of the schedule and there are utilities and protocols to connect them: - Configuration (specification and management), - Query interfaces (a REST-like API and internal protocols to query the models), and - A basic Rails controller implementation. We have a way to configure the schedule, internal methods to generate the data, and a way to retrieve data from the client. However this gem is largely view-framework agnostic. We could use a variety of client-side packages or even more traditional Rails view templates to generate HTML. In any case, to get a good feel in a display like this we need some client-side code. The gem includes client-side modules to: - Manage <b>time and display geometries</b> with "infinite" scroll along the time axis. - <b>Format display cells</b> in ways specific to the resource models. - <b>Update text justification</b> as the display is scrolled horizontally. ## Configuration A **scheduled resource** is something that can be used for one thing at a time. So if "Rocky & Bullwinkle" is on channel 3 from 10am to 11am on Saturday, then 'channel 3' is the <u>resource</u> and that showing of the episode is a <u>resource-use</u> block. Resources and use-blocks are typically Rails models. Each resource and its use-blocks get one row in the display. That row has a label to the left with some timespan visible on the rest of the row. Something else you would expect see in a schedule would be headers and labels -- perhaps one row with the date and another row with the hour. Headers and labels also fit the model of resources and use-blocks. Basic timezone-aware classes (ZTime*) for those are included in this gem. ### Config File The schedule configuration comes from <tt>config/resource_schedule.yml</tt> which has three top-level sections: - ResourceKinds: A hash where the key is a Resource and the value is a UseBlock. (Both are class names), - Resources: A list where each item is a Resource Class followed by one or more resource ids, and - visibleTime: The visible timespan of the schedule in seconds. The example file <tt>config/resource_schedule.yml</tt> (installed when you run <tt>schedulize</tt>) should be enough to display a two-row schedule with just the date above and the hour below. Of course you can monkey-patch or subclass these classes for your own needs. ### The schedule API The 'schedule' endpoint uses parameters <tt>t1</tt> and <tt>t2</tt> to specify a time interval for the request. A third parameter <tt>inc</tt> allows an initial time window to be expanded without repeating blocks that span those boundaries. The time parameters _plus the configured resources_ define the data to be returned. ### More About Configuration Management The <b>ScheduledResource</b> class manages resource and use-block class names, id's and labels for a schedule according to the configuration file. A ScheduledResource instance ties together: 1. A resource class (eg TvStation), 2. An id (a channel number in this example), and 3. Strings and other assets that will go into the DOM. The id is used to - select a resource _instance_ and - select instances of the _resource use block_ class (eg Program instances). The id _could_ be a database id but more often is something a little more suited to human use in the configuration. In any case it is used by model class method <tt>(resource_use_block_class).get_all_blocks()</tt> to select the right use-blocks for the resource. A resource class name and id are are joined with a '_' to form a tag that also serves as an id for the DOM. Once the configuration yaml is loaded that data is maintained in the session structure. Of course having a single configuration file limits the application's usefulness. A more general approach would be to have a user model with login and configuration would be associated with the user. ## Installation Add this line to your application's Gemfile: ```ruby gem 'scheduled_resource' ``` And then execute: $ bundle Or install it yourself as: $ gem install scheduled_resource Then from your application's root execute: $ schedulize . This will install a few image placeholders, client-side modules and a stylesheet under <tt>vendor/assets</tt>, an example configuration in <tt>config/resource_schedule.yml</tt> and an example controller in <tt>app/controllers/schedule_controller.rb</tt>. Also, if you use $ bundle show scheduled_resource to locate the installed source you can browse example classes <tt>lib/z_time_*.rb</tt> and the controller helper methods in <tt>lib/scheduled_resource/helper.rb</tt> ## Testing This gem also provides for a basic test application using angularjs to display a minimal but functional schedule showing just the day and hour headers in two different timezones (US Pacific and Eastern). Proceed as follows, starting with a fresh Rails app: $ rails new test_sr As above, add the gem to the Gemfile, then $ cd test_sr $ bundle $ schedulize . Add lines such as these to <tt>config/routes.rb</tt> get "/schedule/index" => "schedule#index" get "/schedule" => "schedule#schedule" Copy / merge these files from the gem source into the test app: $SR_SRC/app/views/layouts/application.html.erb $SR_SRC/app/views/schedule/index.html.erb $SR_SRC/app/assets/javascripts/{angular.js,script.js,controllers.js} and add <tt>//= require angular</tt> to application.js just below the entries for <tt>jquery</tt>. After you run the server and browse to http://0.0.0.0:3000/schedule/index you should see the four time-header rows specified by the sample config file. ## More Examples A better place to see the use of this gem is at [tv4](https://github.com/emeyekayee/tv4). Specifically, models <tt>app/models/event.rb</tt> and <tt>app/models/station.rb</tt> give better examples of implementing the ScheduledResource protocol and adapting to a db schema organized along somewhat different lines. ## Contributing 1. Fork it ( https://github.com/emeyekayee/scheduled_resource/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.