Initial commit: Scala/Thorium task manager demo app
This commit is contained in:
41
src/main/scala/TaskStore.scala
Normal file
41
src/main/scala/TaskStore.scala
Normal file
@@ -0,0 +1,41 @@
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import scala.jdk.CollectionConverters.*
|
||||
|
||||
case class Task(id: UUID, title: String, completed: Boolean)
|
||||
|
||||
object TaskStore:
|
||||
private val tasks = ConcurrentHashMap[UUID, Task]()
|
||||
|
||||
// Pre-seed sample tasks
|
||||
locally {
|
||||
val samples = List(
|
||||
"Deploy Scala app to Clouderized",
|
||||
"Set up CI/CD with Gitea Actions",
|
||||
"Configure custom domain"
|
||||
)
|
||||
samples.foreach { title =>
|
||||
val id = UUID.randomUUID()
|
||||
tasks.put(id, Task(id, title, false))
|
||||
}
|
||||
}
|
||||
|
||||
def all(): List[Task] =
|
||||
tasks.values().asScala.toList.sortBy(_.title)
|
||||
|
||||
def add(title: String): Task =
|
||||
val id = UUID.randomUUID()
|
||||
val task = Task(id, title.trim, false)
|
||||
tasks.put(id, task)
|
||||
task
|
||||
|
||||
def toggle(id: UUID): Unit =
|
||||
Option(tasks.get(id)).foreach { task =>
|
||||
tasks.put(id, task.copy(completed = !task.completed))
|
||||
}
|
||||
|
||||
def delete(id: UUID): Unit =
|
||||
tasks.remove(id)
|
||||
|
||||
def get(id: UUID): Option[Task] =
|
||||
Option(tasks.get(id))
|
||||
Reference in New Issue
Block a user