Skip to content

fluxfederation/partial_ks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PartialKs

A library to sync a subset of your database

Usage

See the following example:

configuration = [
  [User, nil, -> { User.where(:id => [1]) }],     # specify a subset of users. as users have no "parent", specify `nil`
  [BlogPost, User]                                # filter blog_posts by User
]

PartialKs::Sync.new(configuration).run! do |tables_to_filter, tables|
  puts tables_to_filter.inspect
  puts tables.inspect
end

So how does it work ?

The idea is that PartialKS builds a tree of models and uses the parent of a model to sync a subset of the database records for the model. E.g.

  User id 1, 3, 5, 7
  User -> BlogPost

PartialKS will only download blog_posts records for users 1, 3, 5, and 7.

Most of the time PartialKS will be able to deduce the parent automatically.

If a model has no "parent", PartialKS will download the whole table.

If a model has "multiple parents", then PartialKS will not choose, and hence will download the whole table. If it is not a problem to download the whole table, then you can address the warning at your leisure.

Public API

It currently consists of :

  • PartialKs::Sync

Not supported

Things that are not supported in this version.

  • Polymorphic relationships
  • Tables with STI

About

Partially sync your database with Active Record

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages