Skip to content

Commit 90d45b7

Browse files
author
Gerrit Garbereder
committed
Add usecases
1 parent fe04c55 commit 90d45b7

File tree

14 files changed

+220
-1
lines changed

14 files changed

+220
-1
lines changed

.github/workflows/build.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,18 @@ jobs:
3030
distribution: 'temurin'
3131
- name: Setup Gradle
3232
uses: gradle/gradle-build-action@v2
33-
- name: Test with Gradle
33+
- name: Build with Gradle
3434
run: |
3535
chmod +x gradlew &&
36+
# Entities
3637
cd Task-Tracker-Entities &&
3738
ln -s ../gradle &&
3839
ln -s ../gradlew &&
3940
./gradlew check &&
4041
./gradlew publishToMavenLocal
42+
# Usecases
43+
cd ../Task-Tracker-Usecases &&
44+
ln -s ../gradle &&
45+
ln -s ../gradlew &&
46+
./gradlew check &&
47+
./gradlew publishToMavenLocal
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
plugins {
2+
kotlin("multiplatform") version "1.8.21"
3+
id("maven-publish")
4+
id("com.google.devtools.ksp") version "1.8.21-1.0.11"
5+
}
6+
7+
group = "com.garbereder.tasktracker.usecases"
8+
version = "1.0-SNAPSHOT"
9+
10+
repositories {
11+
mavenLocal()
12+
mavenCentral()
13+
}
14+
15+
kotlin {
16+
sourceSets {
17+
val commonMain by getting {
18+
dependencies {
19+
implementation("com.garbereder.tasktracker.entities:Task-Tracker-Entities:1.0-SNAPSHOT")
20+
}
21+
}
22+
val commonTest by getting {
23+
dependencies {
24+
implementation("io.mockative:mockative:1.4.1")
25+
}
26+
}
27+
}
28+
jvm {
29+
jvmToolchain(17)
30+
withJava()
31+
testRuns["test"].executionTask.configure {
32+
useJUnitPlatform()
33+
}
34+
}
35+
js(IR) {
36+
nodejs()
37+
compilations.all {
38+
compileTaskProvider.configure {
39+
compilerOptions.freeCompilerArgs.add("-Xir-minimized-member-names=false")
40+
}
41+
}
42+
}
43+
val hostOs = System.getProperty("os.name")
44+
val isMingwX64 = hostOs.startsWith("Windows")
45+
val nativeTarget = when {
46+
hostOs == "Mac OS X" -> macosX64("native")
47+
hostOs == "Linux" -> linuxX64("native")
48+
isMingwX64 -> mingwX64("native")
49+
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
50+
}
51+
52+
53+
sourceSets {
54+
val commonMain by getting
55+
val commonTest by getting {
56+
dependencies {
57+
implementation(kotlin("test"))
58+
}
59+
}
60+
val jvmMain by getting
61+
val jvmTest by getting
62+
val jsMain by getting
63+
val jsTest by getting
64+
val nativeMain by getting
65+
val nativeTest by getting
66+
}
67+
}
68+
69+
dependencies {
70+
configurations
71+
.filter { it.name.startsWith("ksp") && it.name.contains("Test") }
72+
.forEach {
73+
add(it.name, "io.mockative:mockative-processor:1.4.1")
74+
}
75+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
kotlin.code.style=official
2+
kotlin.js.compiler=ir
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
rootProject.name = "Task-Tracker-Usecases"
3+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.garbereder.tasktracker.usecases
2+
3+
interface UseCase {
4+
fun invoke()
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.garbereder.tasktracker.usecases.tasks
2+
3+
import com.garbereder.tasktracker.entities.Task
4+
import com.garbereder.tasktracker.entities.TaskCollection
5+
import com.garbereder.tasktracker.usecases.UseCase
6+
7+
class AddTask constructor(private val collection: TaskCollection, private val task: Task) : UseCase {
8+
override fun invoke() = collection.add(task)
9+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.garbereder.tasktracker.usecases.tasks
2+
3+
import com.garbereder.tasktracker.entities.TaskCollection
4+
import com.garbereder.tasktracker.usecases.UseCase
5+
6+
class LoadTasks(private val reader: TaskCollectionReader) : UseCase {
7+
8+
lateinit var tasks: TaskCollection
9+
10+
override fun invoke() {
11+
tasks = this.reader.read()
12+
}
13+
14+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.garbereder.tasktracker.usecases.tasks
2+
3+
import com.garbereder.tasktracker.entities.Task
4+
import com.garbereder.tasktracker.entities.TaskCollection
5+
import com.garbereder.tasktracker.usecases.UseCase
6+
7+
class RemoveTask(private val collection: TaskCollection, private val task: Task): UseCase {
8+
override fun invoke() = collection.remove(task)
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.garbereder.tasktracker.usecases.tasks
2+
3+
import com.garbereder.tasktracker.entities.TaskCollection
4+
5+
interface TaskCollectionFactory {
6+
fun create(): TaskCollection
7+
}
8+

0 commit comments

Comments
 (0)