diff --git a/dbConvertor/README.md b/dbConvertor/README.md new file mode 100644 index 0000000..ee28ea5 --- /dev/null +++ b/dbConvertor/README.md @@ -0,0 +1,3 @@ +# cn.kzoj.dbConvertor + +dbConvertor模块用于从hoj数据库迁移到kzoj数据库 \ No newline at end of file diff --git a/dbConvertor/build.gradle.kts b/dbConvertor/build.gradle.kts new file mode 100644 index 0000000..af99d70 --- /dev/null +++ b/dbConvertor/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("jvm") version libs.versions.kotlin +} + +group = "cn.kzoj" +version = "0.0.1" + +repositories { + mavenCentral() +} + +dependencies { + dependencies { + implementation(project(":dto")) + implementation(project(":persistence")) + + implementation(libs.bundles.exposed) + implementation(libs.hikaricp) + implementation(libs.kotlinx.datetime) + implementation(libs.logback.classic) + implementation(libs.mysql.connector) + } +} \ No newline at end of file diff --git a/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/Main.kt b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/Main.kt new file mode 100644 index 0000000..f19cac6 --- /dev/null +++ b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/Main.kt @@ -0,0 +1,5 @@ +package cn.kzoj.dbConvertor + +fun main(args: Array) { + +} \ No newline at end of file diff --git a/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/Database.kt b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/Database.kt new file mode 100644 index 0000000..200e518 --- /dev/null +++ b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/Database.kt @@ -0,0 +1,5 @@ +package cn.kzoj.dbConvertor.hojData + +fun configureDatabase() { + +} \ No newline at end of file diff --git a/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemDAO.kt b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemDAO.kt new file mode 100644 index 0000000..7eef901 --- /dev/null +++ b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemDAO.kt @@ -0,0 +1,42 @@ +package cn.kzoj.dbConvertor.hojData.problem + +import org.jetbrains.exposed.dao.IntEntity +import org.jetbrains.exposed.dao.IntEntityClass +import org.jetbrains.exposed.dao.id.EntityID + +@Suppress("Unused") +class ProblemDAO(id: EntityID) : IntEntity(id) { + companion object: IntEntityClass(ProblemTable) + + var problemId by ProblemTable.problemId + var title by ProblemTable.title + var author by ProblemTable.author + var problemType by ProblemTable.problemType + var timeLimit by ProblemTable.timeLimit + var memoryLimit by ProblemTable.memoryLimit + var stackLimit by ProblemTable.stackLimit + var problemDescription by ProblemTable.problemDescription + var inputDescription by ProblemTable.inputDescription + var outputDescription by ProblemTable.outputDescription + var examples by ProblemTable.examples + var isRemoteJudge by ProblemTable.isRemoteJudge + var problemSource by ProblemTable.problemSource + var difficulty by ProblemTable.difficulty + var hint by ProblemTable.hint + var authority by ProblemTable.authority + var oiScore by ProblemTable.oiScore + var isCodeSharable by ProblemTable.isCodeSharable + var judgeMode by ProblemTable.judgeMode + var judgeCaseMode by ProblemTable.judgeCaseMode + var spjCode by ProblemTable.spjCode + var spjLanguage by ProblemTable.spjLanguage + var removeEndBlankChar by ProblemTable.removeEndBlankChar + var openCaseResult by ProblemTable.openCaseResult + var isCaseUploaded by ProblemTable.isCaseUploaded + var caseVersion by ProblemTable.caseVersion + var lastModifiedByUser by ProblemTable.lastModifiedByUser + var isInGroup by ProblemTable.isInGroup + var groupId by ProblemTable.groupId + var dateCreated by ProblemTable.dateCreated + var dateLastModified by ProblemTable.dateLastModified +} \ No newline at end of file diff --git a/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemTable.kt b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemTable.kt new file mode 100644 index 0000000..725640a --- /dev/null +++ b/dbConvertor/src/main/kotlin/cn/kzoj/dbConvertor/hojData/problem/ProblemTable.kt @@ -0,0 +1,71 @@ +package cn.kzoj.dbConvertor.hojData.problem + +import kotlinx.datetime.LocalDateTime +import org.jetbrains.exposed.dao.id.IntIdTable +import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.sql.kotlin.datetime.datetime + +object ProblemTable: IntIdTable("problem_") { + + val problemId: Column = text("problem_id") + + val title: Column = text("title") + + val author: Column = text("author") + + val problemType: Column = integer("problem_type") + + val timeLimit: Column = long("time_limit") + + val memoryLimit: Column = long("memory_limit") + + val stackLimit: Column = long("stack_limit") + + val problemDescription: Column = text("problem_description") + + val inputDescription: Column = text("input_description") + + val outputDescription: Column = text("output_description") + + val examples: Column = text("examples") + + val isRemoteJudge: Column = bool("is_remote_judge") + + val problemSource: Column = text("problem_source") + + val difficulty: Column = integer("difficulty") + + val hint: Column = text("hint") + + val authority: Column = integer("authority") + + val oiScore: Column = integer("oi_score") + + val isCodeSharable: Column = bool("is_code_sharable") + + val judgeMode: Column = text("judge_mode") + + val judgeCaseMode: Column = text("judge_case_mode") + + val spjCode: Column = text("spj_code").nullable() + + val spjLanguage: Column = text("spj_language").nullable() + + val removeEndBlankChar: Column = bool("remove_end_blank_char") + + val openCaseResult: Column = bool("open_case_result") + + val isCaseUploaded: Column = bool("is_case_uploaded") + + val caseVersion: Column = text("case_version") + + val lastModifiedByUser: Column = text("last_modified_by_user") + + val isInGroup: Column = bool("is_in_group") + + val groupId: Column = integer("group_id").nullable() + + val dateCreated: Column = datetime("date_created") + + val dateLastModified: Column = datetime("date_last_modified") +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index cb07b91..b99956b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,4 +3,5 @@ plugins { } rootProject.name = "KZOJ" -include("app", "dto", "judge", "persistence") \ No newline at end of file +include("app", "dto", "judge", "persistence") +include("dbConvertor")