Skip to content

Commit

Permalink
Data: Support for installing module + JPA alignment (#311)
Browse files Browse the repository at this point in the history
  • Loading branch information
kishorereddy authored Feb 17, 2021
1 parent 1fe962b commit c68a59f
Show file tree
Hide file tree
Showing 51 changed files with 949 additions and 531 deletions.
20 changes: 12 additions & 8 deletions src/apps/kotlin/slatekit-samples/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ buildscript {
ext.slatekit_version = new File('../version.txt').text
ext.slatekit_version_beta = new File('../version-beta.txt').text
ext.ktor_version = '1.1.1'
ext.logback_contrib_version = '0.1.5'

repositories {
jcenter()
Expand Down Expand Up @@ -87,14 +88,18 @@ dependencies {
compile "mysql:mysql-connector-java:5.1.13"
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'org.threeten:threetenbp:1.3.8'
compile "ch.qos.logback.contrib:logback-jackson:$logback_contrib_version"
compile "ch.qos.logback.contrib:logback-json-classic:$logback_contrib_version"
compile "com.fasterxml.jackson.core:jackson-databind:2.9.5"
compile "org.slf4j:slf4j-api:1.7.25"

// /* <slatekit_local>
if( slatekitSetupViaBinary ) {
implementation "com.slatekit:slatekit-results:$slatekit_version"
implementation "com.slatekit:slatekit-common:$slatekit_version"
implementation "com.slatekit:slatekit-context:$slatekit_version"
implementation "com.slatekit:slatekit-app:$slatekit_version"
implementation "com.slatekit:slatekit-meta:$slatekit_version_beta"
implementation "com.slatekit:slatekit-meta:$slatekit_version"
implementation "com.slatekit:slatekit-policy:$slatekit_version"
implementation "com.slatekit:slatekit-serialization:$slatekit_version"
implementation "com.slatekit:slatekit-tracking:$slatekit_version"
Expand All @@ -106,12 +111,12 @@ dependencies {
implementation "com.slatekit:slatekit-http:$slatekit_version"
implementation "com.slatekit:slatekit-notifications:$slatekit_version"
implementation "com.slatekit:slatekit-cli:$slatekit_version"
implementation "com.slatekit:slatekit-db:$slatekit_version_beta"
implementation "com.slatekit:slatekit-query:$slatekit_version_beta"
implementation "com.slatekit:slatekit-entities:$slatekit_version_beta"
implementation "com.slatekit:slatekit-orm:$slatekit_version_beta"
implementation "com.slatekit:slatekit-integration:$slatekit_version_beta"
implementation "com.slatekit:slatekit-server:$slatekit_version_beta"
implementation "com.slatekit:slatekit-db:$slatekit_version"
implementation "com.slatekit:slatekit-query:$slatekit_version"
implementation "com.slatekit:slatekit-data:$slatekit_version"
implementation "com.slatekit:slatekit-entities:$slatekit_version"
implementation "com.slatekit:slatekit-integration:$slatekit_version"
implementation "com.slatekit:slatekit-server:$slatekit_version"
implementation "com.slatekit:slatekit-connectors-cli:$slatekit_version"
implementation "com.slatekit:slatekit-connectors-jobs:$slatekit_version"
implementation "com.slatekit:slatekit-providers-aws:$slatekit_version"
Expand All @@ -127,7 +132,6 @@ dependencies {
implementation project(":slatekit-query")
implementation project(":slatekit-data")
implementation project(":slatekit-entities")
//implementation project(":slatekit-orm")
implementation project(":slatekit-meta")
implementation project(":slatekit-policy")
implementation project(":slatekit-serialization")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package slatekit.samples


fun main(args: Array<String>) {
Samples.app(args)
// Samples.cli(args)
// Samples.app(args)
Samples.cli(args)
// Samples.api(args)
// Samples.job(arrayOf("-sample=onetime"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package slatekit.samples.app

import slatekit.app.App
import slatekit.app.AppOptions
import slatekit.common.DateTimes
import slatekit.context.Context
import slatekit.common.args.ArgsSchema
import slatekit.common.utils.B64Java8
Expand Down Expand Up @@ -58,6 +59,9 @@ class App(ctx: Context) : App<Context>(ctx, AppOptions(showWelcome = true)) {


override suspend fun exec(): Any? {
val logger = ctx.logs.getLogger("app")
val values = listOf("a" to 1, "b" to true, "c" to "kotlin", "d" to DateTimes.now())
logger.warn("test warn", values)
println("executing")
println("Your work should be done here...")
return OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import slatekit.app.App
import slatekit.app.AppOptions
import slatekit.context.Context
import slatekit.common.args.ArgsSchema
import slatekit.common.conf.Confs
import slatekit.common.utils.B64Java8
import slatekit.common.crypto.Encryptor
import slatekit.common.data.Connections
import slatekit.common.info.About
import slatekit.connectors.entities.AppEntContext


/**
Expand Down Expand Up @@ -66,7 +69,11 @@ class App(ctx: Context) : App<Context>(ctx, AppOptions(showWelcome = false, show
// samples.cli.greet -greeting="whats up"
// samples.cli.movies
// samples.cli.inputs -name="kishore" -isActive=true -age=41 -dept=2 -account=123 -average=2.4 -salary=120000 -date="2019-04-01T11:05:30Z"
val cli = CLI(ctx)
val dbConfPath = "usr://.slatekit/common/conf/db.conf"
val con = Confs.readDbCon(App::class.java, dbConfPath)!!
val cons = Connections.of(con)
val entCtx = AppEntContext.fromContext(ctx, cons = cons)
val cli = CLI(entCtx)
return cli.execute()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,24 @@ import slatekit.apis.*
import slatekit.apis.routes.Api
import slatekit.apis.support.Authenticator
import slatekit.cli.CliSettings
import slatekit.context.Context
import slatekit.common.types.Content
import slatekit.common.info.ApiKey
import slatekit.common.types.ContentType
import slatekit.connectors.cli.CliApi
import slatekit.connectors.entities.AppEntContext
import slatekit.entities.EntityId
import slatekit.entities.EntityLongId
import slatekit.entities.EntityService
import slatekit.results.Try
import slatekit.serialization.Serialization
import slatekit.integration.apis.*
import slatekit.integration.mods.*
import slatekit.migrations.MigrationService
import slatekit.migrations.MigrationSettings
import slatekit.samples.common.apis.SampleAPI
import slatekit.samples.common.models.Movie

class CLI(val ctx: Context) {
class CLI(val ctx: AppEntContext) {

/**
* executes the CLI integrated with the API module
Expand All @@ -29,7 +37,14 @@ class CLI(val ctx: Context) {
val auth = Authenticator(keys)

// 3. Load all the Slate Kit Universal APIs
val apis = apis()
ctx.ent.register<Long, Movie>(EntityLongId(), "movie") { repo -> EntityService( repo ) }
ctx.ent.register<Long, Mod>(EntityLongId(), "mod") { repo -> ModService(ctx.ent, repo)}
val modSvc = ctx.ent.getServiceByType(Mod::class) as ModService
val migSvc = MigrationService(ctx.ent, ctx.ent.dbs, MigrationSettings(true, true), ctx.dirs)
val modCtx = ModuleContext(modSvc, migSvc )
val modApi = ModuleApi(modCtx, ctx)
modApi.register(MovieModule(ctx, modCtx))
val apis = apis(modApi)

// 4. Makes the APIs accessible on the CLI runner
val cli = CliApi(
Expand All @@ -49,9 +64,11 @@ class CLI(val ctx: Context) {
}


fun apis(): List<Api> {
fun apis(modApi:ModuleApi): List<Api> {
return listOf(
Api(klass = SampleAPI::class, singleton = SampleAPI(ctx), setup = SetupType.Annotated)
Api(klass = SampleAPI::class, singleton = SampleAPI(ctx), setup = SetupType.Annotated),
Api(klass = EntitiesApi::class, singleton = EntitiesApi(ctx), setup = SetupType.Annotated),
Api(klass = ModuleApi::class, singleton = modApi, setup = SetupType.Annotated)
)
}

Expand All @@ -64,4 +81,19 @@ class CLI(val ctx: Context) {
val content = Content.text(pretty)
return content
}

class MovieModule(ctx:AppEntContext, mod:ModuleContext) : Module(ctx, mod) {
override val info: ModuleInfo = ModuleInfo(
name = Movie::class.qualifiedName!!,
desc = "Supports user registration",
version = "1.0",
isInstalled = false,
isEnabled = true,
isDbDependent = true,
totalModels = 1,
source = Movie::class.qualifiedName!!,
dependencies = "none",
models = listOf<String>(Movie::class.qualifiedName!!)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,20 @@ class MovieMapper1(val encoders:Encoders<Long, Movie>) : Mapper<Long, Movie> {
Value(Movie::released.name , DataType.DTDateTime, encoders.dateTimes.encode(model.released))
)
}

override fun datatype(field: String): DataType {
return when(field) {
Movie::uuid.name -> DataType.DTUUID
Movie::title.name -> DataType.DTString
Movie::category.name -> DataType.DTString
Movie::playing.name -> DataType.DTBool
Movie::delivery.name -> DataType.DTInt
Movie::cost.name -> DataType.DTInt
Movie::rating.name -> DataType.DTDouble
Movie::released.name -> DataType.DTDateTime
else -> DataType.DTString
}
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import slatekit.data.core.LongId
import slatekit.data.core.Meta
import slatekit.data.core.Table
import slatekit.entities.mapper.EntityMapper
import slatekit.entities.mapper.EntitySettings
import slatekit.meta.models.Model
import slatekit.samples.common.models.Movie

Expand All @@ -30,4 +31,4 @@ object MovieMapper2 : EntityMapper<Long, Movie>(
model = movieModel,
meta = Meta(LongId { m -> m.id }, Table("movie")),
idClass = Long::class,
enClass = Movie::class)
enClass = Movie::class, settings = EntitySettings())
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import slatekit.data.core.LongId
import slatekit.data.core.Meta
import slatekit.data.core.Table
import slatekit.entities.mapper.EntityMapper
import slatekit.entities.mapper.EntitySettings
import slatekit.meta.models.Model
import slatekit.samples.common.models.Movie

Expand All @@ -13,7 +14,7 @@ import slatekit.samples.common.models.Movie
* Cons: Less performant than manual
*/
object MovieMapper3 : EntityMapper<Long, Movie>(
model = Model.loadSchema(Movie::class),
model = Model.load(Movie::class),
meta = Meta(LongId { m -> m.id }, Table("movie")),
idClass = Long::class,
enClass = Movie::class)
enClass = Movie::class, settings = EntitySettings(true))
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,51 @@ package slatekit.samples.common.models

import slatekit.common.DateTime
import slatekit.common.DateTimes
import slatekit.common.Field
import slatekit.entities.Column
import slatekit.entities.EntityUpdatable
import slatekit.entities.EntityWithId
import slatekit.entities.Id
import java.util.*

data class Movie(
/**
* Primary key ( auto-increment )
*/
@property:Id()
override val id: Long = 0L,

/**
* Indexed also using uuid ( for sample purposes )
*/
@property:Field(length = 50, indexed = true)
@property:Column(length = 50, indexed = true)
val uuid: UUID = UUID.randomUUID(),


@property:Field(required = true, length = 50)
@property:Column(required = true, length = 50)
val title: String = "",


@property:Field(length = 20)
@property:Column(length = 20)
val category: String = "",


@property:Field(required = true)
@property:Column(required = true)
val playing: Boolean = false,


@property:Field(required = true)
@property:Column(required = true)
val delivery: Delivery = Delivery.Theater,


@property:Field(required = true)
@property:Column(required = true)
val cost: Int,


@property:Field(required = true)
@property:Column(required = true)
val rating: Double,


@property:Field(required = true)
@property:Column(required = true)
val released: DateTime

) : EntityWithId<Long>, EntityUpdatable<Long, Movie> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,24 +83,10 @@ data class AppEntContext(
* converts this to an app context which is basically
* the same context without the Entities
*/
fun fromContext(ctx: Context, namer: Namer? = null): AppEntContext {
val dbCons = Connections.from(ctx.app, ctx.conf)
val id = Context.identity(ctx.info, ctx.envs)
fun fromContext(ctx: Context, namer: Namer? = null, cons:Connections? = null): AppEntContext {
val dbCons = cons ?: Connections.from(ctx.app, ctx.conf)
return AppEntContext(
ctx.app, ctx.args, ctx.envs, ctx.conf, ctx.logs, ctx.info, id, Entities({ con -> Db(con) }, dbCons, ctx.enc, namer = namer), dbCons, ctx.enc, ctx.dirs
)

}

/**
* converts this to an app context which is basically
* the same context without the Entities
*/
fun fromAppContext(ctx: Context, namer: Namer? = null): AppEntContext {
val dbCons = Connections.from(ctx.app, ctx.conf)
val id = Context.identity(ctx.info, ctx.envs)
return AppEntContext(
ctx.app, ctx.args, ctx.envs, ctx.conf, ctx.logs, ctx.info, id, Entities({ con -> Db(con) }, dbCons, ctx.enc, namer = namer), dbCons, ctx.enc, ctx.dirs
ctx.app, ctx.args, ctx.envs, ctx.conf, ctx.logs, ctx.info, ctx.id, Entities({ con -> Db(con) }, dbCons, ctx.enc, namer = namer), dbCons, ctx.enc, ctx.dirs
)

}
Expand Down
6 changes: 3 additions & 3 deletions src/ext/kotlin/slatekit-providers-logback/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ repositories {
dependencies {

//compile group: 'org.slf4j' , name: 'slf4j-api', version: '1.7.7'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
compile group: 'ch.qos.logback', name: 'logback-core' , version: '1.1.2'
compile group: 'org.logback-extensions', name: 'logback-ext-loggly' , version: '0.1.2'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
compile group: 'ch.qos.logback', name: 'logback-core' , version: '1.2.3'
compile group: 'org.logback-extensions', name: 'logback-ext-loggly' , version: '0.1.5'


compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class LogbackLogger(private val instance: org.slf4j.Logger) : Logger(parseLevel(
* @param entry:
*/
override fun log(entry: LogEntry) {
when (level) {
when (entry.level) {
LogLevel.Debug -> instance.debug(entry.msg, entry.ex)
LogLevel.Info -> instance.info (entry.msg, entry.ex)
LogLevel.Warn -> instance.warn (entry.msg, entry.ex)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import slatekit.common.DateTime

data class LogEntry(
val name: String = "",
val level: LogLevel = LogLevel.Info,
val level: LogLevel,
val msg: String = "",
val ex: Exception? = null,
val tag: String? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ sealed class LogLevel(val name: String, val code: Int) {
operator fun compareTo(lv: LogLevel): Int = this.code.compareTo(lv.code)

object Debug : LogLevel("Debug", 1)
object Info : LogLevel("Meta", 2 )
object Info : LogLevel("Info", 2 )
object Warn : LogLevel("Warn", 3 )
object Error : LogLevel("Error", 4)
object Fatal : LogLevel("Fatal", 5)
Expand Down
Loading

0 comments on commit c68a59f

Please sign in to comment.