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

@ -66,4 +66,5 @@ tasks.register("run") {
springBoot { springBoot {
mainClass = "dev.usbharu.hideout.SpringApplicationKt" 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.PostEvent
import dev.usbharu.hideout.core.domain.event.post.PostEventBody import dev.usbharu.hideout.core.domain.event.post.PostEventBody
import org.slf4j.LoggerFactory
import org.springframework.context.annotation.Scope
import org.springframework.stereotype.Component import org.springframework.stereotype.Component
@Component @Component
class TimelinePostCreateSubscriber(domainEventSubscriber: DomainEventSubscriber) { class TimelinePostCreateSubscriber(domainEventSubscriber: DomainEventSubscriber) :Subscriber{
init { init {
domainEventSubscriber.subscribe<PostEventBody>(PostEvent.CREATE.eventName) { domainEventSubscriber.subscribe<PostEventBody>(PostEvent.CREATE.eventName) {
val post = it.body.getPost() val post = it.body.getPost()
val actor = it.body.getActor() 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 { companion object {
@Suppress("LongParameterList") @Suppress("LongParameterList")
fun create( fun create(

View File

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

View File

@ -56,6 +56,8 @@ create table if not exists actors
move_to bigint null default null, move_to bigint null default null,
emojis varchar(3000) not null default '', emojis varchar(3000) not null default '',
deleted boolean not null default false, deleted boolean not null default false,
icon bigint null,
banner bigint null,
unique ("name", "domain"), unique ("name", "domain"),
constraint fk_actors_instance__id foreign key ("instance") references instance (id) on delete restrict on update restrict, 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 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, mime_type varchar(255) not null,
description varchar(4000) 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 create table if not exists posts
( (
id bigint primary key, id bigint primary key,

View File

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

View File

@ -19,10 +19,18 @@ repositories {
mavenCentral() mavenCentral()
} }
configurations {
all {
exclude("org.springframework.boot", "spring-boot-starter-logging")
exclude("ch.qos.logback", "logback-classic")
}
}
dependencies { dependencies {
implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-starter-security")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
implementation("org.springframework.boot:spring-boot-starter-log4j2")
implementation("dev.usbharu:hideout-core:0.0.1") implementation("dev.usbharu:hideout-core:0.0.1")
@ -67,3 +75,4 @@ sourceSets.main {
"$buildDir/generated/sources/mastodon/src/main/kotlin" "$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 dev.usbharu.hideout.mastodon.query.StatusQueryService
import org.jetbrains.exposed.sql.ResultRow import org.jetbrains.exposed.sql.ResultRow
import org.jetbrains.exposed.sql.andWhere import org.jetbrains.exposed.sql.andWhere
import org.jetbrains.exposed.sql.leftJoin
import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.selectAll
import org.springframework.stereotype.Repository import org.springframework.stereotype.Repository
import java.net.URI import java.net.URI
@ -120,7 +121,7 @@ class StatusQueryServiceImpl : StatusQueryService {
val map = Posts val map = Posts
.leftJoin(PostsMedia) .leftJoin(PostsMedia)
.leftJoin(Actors) .leftJoin(Actors)
.leftJoin(Media) .leftJoin(Media,{PostsMedia.mediaId},{Media.id})
.selectAll() .selectAll()
.where { Posts.id eq id } .where { Posts.id eq id }
.groupBy { it[Posts.id] } .groupBy { it[Posts.id] }