Skip to content

Commit 5a73483

Browse files
committed
feat: log file upload
1 parent 19ca0f7 commit 5a73483

5 files changed

Lines changed: 60 additions & 2 deletions

File tree

src/main/kotlin/io/github/gnuf0rce/mirai/netdisk/NetDiskFileSyncPlugin.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,22 @@ package io.github.gnuf0rce.mirai.netdisk
33
import io.github.gnuf0rce.mirai.netdisk.command.*
44
import io.github.gnuf0rce.mirai.netdisk.data.*
55
import kotlinx.coroutines.*
6-
import net.mamoe.mirai.console.MiraiConsole
6+
import net.mamoe.mirai.console.*
77
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register
88
import net.mamoe.mirai.console.command.CommandManager.INSTANCE.unregister
99
import net.mamoe.mirai.console.plugin.*
1010
import net.mamoe.mirai.console.plugin.jvm.*
1111
import net.mamoe.mirai.console.util.*
1212
import net.mamoe.mirai.event.*
1313
import net.mamoe.mirai.utils.*
14+
import xyz.cssxsh.baidu.disk.data.*
15+
import java.io.File
1416

1517
public object NetDiskFileSyncPlugin : KotlinPlugin(
1618
JvmPluginDescription(
1719
id = "io.github.gnuf0rce.file-sync",
1820
name = "file-sync",
19-
version = "1.3.6",
21+
version = "1.3.7",
2022
) {
2123
author("cssxsh")
2224

@@ -50,6 +52,20 @@ public object NetDiskFileSyncPlugin : KotlinPlugin(
5052
NetDisk.registerTo(globalEventChannel())
5153

5254
BaiduOAuthCommand.register()
55+
56+
if (NetdiskUploadConfig.log) {
57+
NetDisk.launch {
58+
val log = File("./logs")
59+
.listFiles()
60+
.orEmpty()
61+
.maxBy { it.lastModified() }
62+
63+
val file = NetDisk.upload(file = log, path = "mirai-logs", ondup = OnDupType.NEW_COPY)
64+
NetDiskFileSyncRecorder.record(file = file)
65+
}
66+
} else {
67+
logger.info { "如果需要上传日志文件,请修改 upload.yml 中的 log 配置项" }
68+
}
5369
}
5470

5571
override fun onDisable() {

src/main/kotlin/io/github/gnuf0rce/mirai/netdisk/NetDiskFileSyncRecorder.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import net.mamoe.mirai.contact.file.*
66
import net.mamoe.mirai.message.data.*
77
import org.hibernate.*
88
import xyz.cssxsh.baidu.disk.*
9+
import xyz.cssxsh.baidu.disk.data.*
910
import xyz.cssxsh.hibernate.*
1011
import xyz.cssxsh.mirai.hibernate.*
1112

@@ -95,6 +96,24 @@ public object NetDiskFileSyncRecorder {
9596
}
9697
}
9798

99+
public fun record(file: NetDiskFileInfo) {
100+
101+
val record = LogUploadRecord(
102+
uploadTime = file.modified.toEpochSecond(),
103+
filename = file.filename
104+
)
105+
106+
val factory = factory
107+
108+
if (factory != null) {
109+
factory as SessionFactory
110+
111+
factory.fromTransaction { session -> session.persist(record) }
112+
} else {
113+
NetdiskSyncHistory.log.add(record)
114+
}
115+
}
116+
98117
public fun from(uploaderId: Long, start: Long, end: Long): List<SyncUploadRecord> {
99118
val factory = factory
100119

src/main/kotlin/io/github/gnuf0rce/mirai/netdisk/data/NetdiskSyncHistory.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,7 @@ internal object NetdiskSyncHistory : AutoSavePluginData("history") {
1212

1313
@ValueName("share_save_records")
1414
val share: MutableList<ShareSaveRecord> by value()
15+
16+
@ValueName("log_upload_records")
17+
val log: MutableList<LogUploadRecord> by value()
1518
}

src/main/kotlin/io/github/gnuf0rce/mirai/netdisk/data/NetdiskUploadConfig.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@ internal object NetdiskUploadConfig : ReadOnlyPluginConfig("upload") {
88

99
@ValueName("reply")
1010
val reply by value(true)
11+
12+
@ValueName("log")
13+
val log by value(false)
1114
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.github.gnuf0rce.mirai.netdisk.entry
2+
3+
import jakarta.persistence.*
4+
5+
@Entity
6+
@Table(name = "log_upload_record")
7+
@kotlinx.serialization.Serializable
8+
public data class LogUploadRecord(
9+
@Id
10+
@Column(name = "id", nullable = false, updatable = false)
11+
@GeneratedValue(strategy = GenerationType.IDENTITY)
12+
val id: Long = 0,
13+
@Column(name = "upload_time", nullable = false, updatable = false)
14+
val uploadTime: Long = 0,
15+
@Column(name = "filename", nullable = false, updatable = false)
16+
val filename: String = "",
17+
) : java.io.Serializable

0 commit comments

Comments
 (0)