@Deprecated(reusageAllow = false)
would require a custom @Deprecated
annotation that would shadow the default Java one which might not be great, but we could name it something else. although, you might have convinced me -- disallowing reusing a name as the default might not be so bad, because you could always get around it by simply removing the deprecated column altogether and fully replacing it with your new one. you'd have to be careful with your migrations in such a case, but you could do it. as I mentioned I haven't had time for much active development lately, but we've been introducing a lot more compile time code validation in the 4.0 dev branch so I could look into adding it there, and as I mentioned a simple code generation plugin would also definitely work
new_procedure
()public SquidCursor<User> getUsers(int minimumAge) {
// Equivalent to select * from users where users.age >= minimumAge
return mySquidDatabase.query(User.class, Query.select().where(User.AGE.gte(minimumAge)));
}
SquidDatabase
core
library that depends on squidb and squidb-annotations. then your android code depends on core
and squidb-android
, and your iOS code depends on core
and squidb-ios
.
api
instead of implementation
? I believe that only dependencies declared with api
will become part of the public api of a shared module
TableModel
. Would it be possible to disable this queuing supporting setters and instead only create setters with void return types? This way, I would not need to write extra setters to hide the complete squidb classes within one module nor to write extra setters with void return value...
ModelMethods
there, those are not converted to class functions correctly... Can try this again, if you want to know the concrete problem (I think it was that those methods stayed static methods...)
declareAdditionalJava
hook to generate an entirely new file based on the properties in the model spec. I'm not sure that I see too much value in this though -- an interface abstracts away implementation details so that multiple different implementations can be provided. in this case, there would be a 1-1 correspondence between the interface and its implementation, since a squidb model is really just a data transfer class. any alternative implementation wouldn't be accepted by the squidb database classes (since it expects AbstractModel etc.)
@JvmStatic
as is documented there?
ICursor
, ISQLiteDatabase
, ISQLitePreparedStatement
, and ISQLiteOpenHelper
that wrap the corresponding SQLCipher classes. This is usually a pretty direct wrapping; you can find examples of an implementations here, which are the wrappers for the android SQLite bindings project: https://github.com/yahoo/squidb/tree/master/squidb-addons/squidb-sqlite-bindings/src/com/yahoo/squidb/sqlitebindings. then you just override createOpenHelper
in your database to return your SQLCipher implementation, similar to how its documented here: https://github.com/yahoo/squidb/wiki/Using-a-custom-SQLite-build