Skip to content

Commit d217718

Browse files
author
Gerrit Garbereder
committed
Add entities
1 parent f902d5c commit d217718

File tree

12 files changed

+140
-0
lines changed

12 files changed

+140
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
plugins {
2+
kotlin("multiplatform") version "1.8.21"
3+
id("maven-publish")
4+
}
5+
6+
group = "com.garbereder.tasktracker.entities"
7+
version = "1.0-SNAPSHOT"
8+
9+
repositories {
10+
mavenCentral()
11+
}
12+
13+
kotlin {
14+
sourceSets {
15+
val commonMain by getting {
16+
dependencies {
17+
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
18+
}
19+
}
20+
}
21+
jvm {
22+
jvmToolchain(11)
23+
withJava()
24+
testRuns["test"].executionTask.configure {
25+
useJUnitPlatform()
26+
}
27+
}
28+
js(IR) {
29+
nodejs()
30+
compilations.all {
31+
compileTaskProvider.configure {
32+
compilerOptions.freeCompilerArgs.add("-Xir-minimized-member-names=false")
33+
}
34+
}
35+
}
36+
val hostOs = System.getProperty("os.name")
37+
val isMingwX64 = hostOs.startsWith("Windows")
38+
val nativeTarget = when {
39+
hostOs == "Mac OS X" -> macosX64("native")
40+
hostOs == "Linux" -> linuxX64("native")
41+
isMingwX64 -> mingwX64("native")
42+
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
43+
}
44+
45+
46+
sourceSets {
47+
val commonMain by getting
48+
val commonTest by getting {
49+
dependencies {
50+
implementation(kotlin("test"))
51+
}
52+
}
53+
val jvmMain by getting
54+
val jvmTest by getting
55+
val jsMain by getting
56+
val jsTest by getting
57+
val nativeMain by getting
58+
val nativeTest by getting
59+
}
60+
}
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: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## This file must *NOT* be checked into Version Control Systems,
2+
# as it contains information specific to your local configuration.
3+
#
4+
# Location of the SDK. This is only used by Gradle.
5+
# For customization when using a Version Control System, please read the
6+
# header note.
7+
#Sat Jun 03 08:15:00 EEST 2023
8+
sdk.dir=C\:\\Users\\ggarb\\AppData\\Local\\Android\\Sdk
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
rootProject.name = "Task-Tracker-Entities"
3+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
import kotlinx.datetime.LocalDateTime
4+
5+
data class Activity(
6+
val id: String,
7+
val startUTC: LocalDateTime,
8+
val endUTC: LocalDateTime,
9+
val task: Task
10+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
interface ActivityCollection: Iterable<Activity> {
4+
fun add(activity: Activity)
5+
fun remove(activity: Activity)
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
class DuplicateTaskException(task: Task): Exception("Could not add duplicate task: $task") {
4+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
data class Task(
4+
val id: String,
5+
val name: String
6+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
interface TaskCollection: Iterable<Task> {
4+
fun add(task: Task)
5+
fun remove(task: Task)
6+
fun size(): Int
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.garbereder.tasktracker.entities
2+
3+
class TaskNotFoundException(task: Task): Exception("Could not find task: $task") {
4+
}

0 commit comments

Comments
 (0)