feat: TimelinePostCreateSubscriberが機能するように

This commit is contained in:
usbharu 2024-06-29 00:02:50 +09:00
parent c74aba652e
commit c0f03560d5
Signed by: usbharu
GPG Key ID: 6556747BF94EEBC8
11 changed files with 85 additions and 7 deletions

View File

@ -67,3 +67,4 @@ tasks.register("run") {
springBoot {
mainClass = "dev.usbharu.hideout.SpringApplicationKt"
}

11
docker-compose.yml Normal file
View File

@ -0,0 +1,11 @@
version: "3"
services:
db:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "password"
POSTGRES_DB: "hideout"

View File

@ -0,0 +1,4 @@
package dev.usbharu.hideout.core.application.domainevent.subscribers
interface Subscriber {
}

View File

@ -0,0 +1,12 @@
package dev.usbharu.hideout.core.application.domainevent.subscribers
import org.springframework.boot.ApplicationArguments
import org.springframework.boot.ApplicationRunner
import org.springframework.stereotype.Component
@Component
class SubscriberRunner(subscribers:List<Subscriber>) : ApplicationRunner {
override fun run(args: ApplicationArguments?) {
}
}

View File

@ -2,16 +2,23 @@ package dev.usbharu.hideout.core.application.domainevent.subscribers
import dev.usbharu.hideout.core.domain.event.post.PostEvent
import dev.usbharu.hideout.core.domain.event.post.PostEventBody
import org.slf4j.LoggerFactory
import org.springframework.context.annotation.Scope
import org.springframework.stereotype.Component
@Component
class TimelinePostCreateSubscriber(domainEventSubscriber: DomainEventSubscriber) {
class TimelinePostCreateSubscriber(domainEventSubscriber: DomainEventSubscriber) :Subscriber{
init {
domainEventSubscriber.subscribe<PostEventBody>(PostEvent.CREATE.eventName) {
val post = it.body.getPost()
val actor = it.body.getActor()
println(post.toString())
logger.info("New Post! : {}",post)
}
}
companion object{
private val logger = LoggerFactory.getLogger(TimelinePostCreateSubscriber::class.java)
}
}

View File

@ -244,6 +244,30 @@ class Post(
)
}
override fun toString(): String {
return "Post(" +
"id=$id, " +
"createdAt=$createdAt, " +
"url=$url, " +
"repostId=$repostId, " +
"replyId=$replyId, " +
"apId=$apId, " +
"actorId=$actorId, " +
"visibility=$visibility, " +
"visibleActors=$visibleActors, " +
"content=$content, " +
"overview=$overview, " +
"sensitive=$sensitive, " +
"text='$text', " +
"emojiIds=$emojiIds, " +
"mediaIds=$mediaIds, " +
"deleted=$deleted, " +
"hide=$hide, " +
"moveTo=$moveTo" +
")"
}
companion object {
@Suppress("LongParameterList")
fun create(

View File

@ -24,9 +24,9 @@ spring:
default-property-inclusion: always
datasource:
driver-class-name: org.postgresql.Driver
url: "jdbc:postgresql:hideout3"
url: "jdbc:postgresql:hideout"
username: "postgres"
password: ""
password: "password"
data:
mongodb:
auto-index-creation: true

View File

@ -56,6 +56,8 @@ create table if not exists actors
move_to bigint null default null,
emojis varchar(3000) not null default '',
deleted boolean not null default false,
icon bigint null,
banner bigint null,
unique ("name", "domain"),
constraint fk_actors_instance__id foreign key ("instance") references instance (id) on delete restrict on update restrict,
constraint fk_actors_actors__move_to foreign key ("move_to") references actors (id) on delete restrict on update restrict
@ -91,6 +93,13 @@ create table if not exists media
mime_type varchar(255) not null,
description varchar(4000) null
);
alter table actors
add constraint fk_actors_media__icon foreign key ("icon") references media (id) on delete cascade on update cascade;
alter table actors
add constraint fk_actors_media__banner foreign key ("banner") references media (id) on delete cascade on update cascade;
create table if not exists posts
(
id bigint primary key,

View File

@ -6,7 +6,7 @@
</Console>
</Appenders>
<Loggers>
<Root level="TRACE">
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
<Logger name="dev.usbharu.owl.broker.service.QueuedTaskAssignerImpl" level="TRACE"/>

View File

@ -19,10 +19,18 @@ repositories {
mavenCentral()
}
configurations {
all {
exclude("org.springframework.boot", "spring-boot-starter-logging")
exclude("ch.qos.logback", "logback-classic")
}
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
implementation("org.springframework.boot:spring-boot-starter-log4j2")
implementation("dev.usbharu:hideout-core:0.0.1")
@ -67,3 +75,4 @@ sourceSets.main {
"$buildDir/generated/sources/mastodon/src/main/kotlin"
)
}

View File

@ -28,6 +28,7 @@ import dev.usbharu.hideout.mastodon.query.StatusQuery
import dev.usbharu.hideout.mastodon.query.StatusQueryService
import org.jetbrains.exposed.sql.ResultRow
import org.jetbrains.exposed.sql.andWhere
import org.jetbrains.exposed.sql.leftJoin
import org.jetbrains.exposed.sql.selectAll
import org.springframework.stereotype.Repository
import java.net.URI
@ -120,7 +121,7 @@ class StatusQueryServiceImpl : StatusQueryService {
val map = Posts
.leftJoin(PostsMedia)
.leftJoin(Actors)
.leftJoin(Media)
.leftJoin(Media,{PostsMedia.mediaId},{Media.id})
.selectAll()
.where { Posts.id eq id }
.groupBy { it[Posts.id] }