Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Auto detect text files and perform LF normalization
# This keeps unix/windows machines from wanting to change every file
# from the other because of the line ending (\r vs \r\n)
* text=auto
*.sh text eol=lf
*.env* text eol=lf

# Atlas migration hashes are different if file get windows line endings
*.sql text eol=lf
62 changes: 35 additions & 27 deletions gql/resolver_modpacks.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func (r *mutationResolver) UpdateModpack(ctx context.Context, modpackID string,
SetINNF(updatedModpack.ShortDescription, update.SetShortDescription)
SetINNF(updatedModpack.FullDescription, update.SetFullDescription)
SetINNF(updatedModpack.Hidden, update.SetHidden)
SetCompatibilityINNF(updatedModpack.Compatibility, update.SetCompatibility) //Perhaps have it check mods for compatibility instead of taking an Input?
SetCompatibilityINNF(updatedModpack.Compatibility, update.SetCompatibility)

resultModpack, err := update.Save(ctx)
if err != nil {
Expand Down Expand Up @@ -246,7 +246,6 @@ func (r *mutationResolver) UpdateModpack(ctx context.Context, modpackID string,
}

func (r *mutationResolver) UpdateModpackCompatibility(ctx context.Context, modpackID string, compatibility generated.CompatibilityInfoInput) (bool, error) {
//copied from resolver_mods.go. Probably unnecessary since everything should be done during creation.
updateModpack := generated.UpdateModpack{
Compatibility: &compatibility,
}
Expand Down Expand Up @@ -288,41 +287,50 @@ func (r *queryResolver) GetModpackRelease(ctx context.Context, modpackID string,
return (*conv.ModpackReleaseImpl)(nil).Convert(dbRelease), nil
}

func getWorstState(currentPackState, modState generated.CompatibilityState) generated.CompatibilityState {
if currentPackState == generated.CompatibilityStateBroken || modState == generated.CompatibilityStateBroken {
return generated.CompatibilityStateBroken
} else if currentPackState == generated.CompatibilityStateDamaged || modState == generated.CompatibilityStateDamaged {
return generated.CompatibilityStateDamaged
}
return generated.CompatibilityStateWorks
}

func (r *queryResolver) GetModCompatibilities(ctx context.Context, modpackID string) (*generated.ModCompatibilities, error) {
mods, err := db.From(ctx).Modpack.Query().
Where(modpack.ID(modpackID)).QueryModpackMods().QueryMod().All(ctx)
if err != nil {
return nil, err
}
EAlist := []*generated.Mod{}
worstEA := generated.CompatibilityStateWorks
EXPlist := []*generated.Mod{}
worstEXP := generated.CompatibilityStateWorks

// calculate overall pack compatibility from involved mods
// TODO this should also recursively check mods' dependency mods
packWorstEaState := generated.CompatibilityStateWorks
packWorstExpState := generated.CompatibilityStateWorks
for _, mod := range mods {
// check worst EA
if generated.CompatibilityState(mod.Compatibility.Ea.State) == generated.CompatibilityStateBroken {
worstEA = generated.CompatibilityStateBroken
} else if generated.CompatibilityState(mod.Compatibility.Ea.State) == generated.CompatibilityStateDamaged && worstEA != generated.CompatibilityStateBroken {
worstEA = generated.CompatibilityStateDamaged
}
// check worst EXP
if generated.CompatibilityState(mod.Compatibility.Exp.State) == generated.CompatibilityStateBroken {
worstEXP = generated.CompatibilityStateBroken
} else if generated.CompatibilityState(mod.Compatibility.Exp.State) == generated.CompatibilityStateDamaged && worstEXP != generated.CompatibilityStateBroken {
worstEXP = generated.CompatibilityStateDamaged
}
}
// get list of mods
for _, mod := range mods {
if generated.CompatibilityState(mod.Compatibility.Ea.State) == worstEA {
EAlist = append(EAlist, (*conv.ModImpl)(nil).Convert(mod))
}
if generated.CompatibilityState(mod.Compatibility.Exp.State) == worstEXP {
EXPlist = append(EXPlist, (*conv.ModImpl)(nil).Convert(mod))
packWorstEaState = getWorstState(packWorstEaState, generated.CompatibilityState(mod.Compatibility.Ea.State))
packWorstExpState = getWorstState(packWorstExpState, generated.CompatibilityState(mod.Compatibility.Exp.State))
}

// build list of mods that are causing the pack to have that compatibility state
eaWorstList := []*generated.Mod{}
expWorstList := []*generated.Mod{}
packIsNotBothWorks := packWorstEaState != generated.CompatibilityStateWorks || packWorstExpState != generated.CompatibilityStateWorks
if packIsNotBothWorks {
for _, mod := range mods {
if packWorstEaState != generated.CompatibilityStateWorks {
if generated.CompatibilityState(mod.Compatibility.Ea.State) == packWorstEaState {
eaWorstList = append(eaWorstList, (*conv.ModImpl)(nil).Convert(mod))
}
}
if packWorstExpState != generated.CompatibilityStateWorks {
if generated.CompatibilityState(mod.Compatibility.Exp.State) == packWorstExpState {
expWorstList = append(expWorstList, (*conv.ModImpl)(nil).Convert(mod))
}
}
}
}
return &generated.ModCompatibilities{WorstEa: EAlist, WorstExp: EXPlist}, nil
return &generated.ModCompatibilities{WorstEa: eaWorstList, WorstExp: expWorstList}, nil
}

func (r *mutationResolver) CreateModpackRelease(ctx context.Context, modpackID string, release generated.NewModpackRelease) (*generated.ModpackRelease, error) {
Expand Down
1 change: 1 addition & 0 deletions migrations/atlas.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
4 changes: 2 additions & 2 deletions migrations/sql/atlas.sum
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
h1:CelcBqJE9oBnByHVAYrd1F8Bi7Ug3sTSbsHKJwcrsTE=
h1:gY/0ZPfp6Yti8amQfPff1nebbpNXxcidJmwvo+tT2QM=
000001_create_initial_tables.down.sql h1:QcXXwE8ir3PM3vZjQfBihY55WiuLYjN8pbbk/L6U+bs=
000001_create_initial_tables.up.sql h1:EfAqETefs7TW9BDVS4ukiB7wUFs+HQzVdc3qHhdAFd4=
000002_create_user_group_table.down.sql h1:uJjRbQ3H7yvPGNXLD5iSPmderEoWhCNGdsqN8yqBIRY=
Expand Down Expand Up @@ -80,4 +80,4 @@ h1:CelcBqJE9oBnByHVAYrd1F8Bi7Ug3sTSbsHKJwcrsTE=
20241008092121_nullable_mod_logo.down.sql h1:vKZrz/FqaaQctvzrTR0EvQcyQ6ENWgTbcud7q2/NvnY=
20241008092121_nullable_mod_logo.up.sql h1:7ePponYitScS4NnMP+hRoEAKnvPPpbCHXMxilYzfmD8=
20250623121418_add_modpacks.down.sql h1:s4R0G3LDW8Xx/9kTHRNjmOdBJJNr2ckGjiVESDSmObQ=
20250623121418_add_modpacks.up.sql h1:hEmGQve6Hkef5Wue/98E835JI7C/RaRN/Hl8rmYCJ1c=
20250623121418_add_modpacks.up.sql h1:w/mCNxtVpz1zADlP6e7XW/eukFG5dcsSvDNa04Vvmp8=
193 changes: 176 additions & 17 deletions mise.lock
Original file line number Diff line number Diff line change
@@ -1,43 +1,202 @@
[tools."aqua:minio/mc"]
# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html

[[tools."aqua:minio/mc"]]
version = "RELEASE.2025-04-08T15-39-49Z"
backend = "aqua:minio/mc"

[tools."aqua:minio/mc".checksums]
"mc.RELEASE.2025-04-08T15-39-49Z" = "sha256:43d44d801a936e48390c8d2dc02c1c1cc1e973becbe71897f28ca06a9f456489"
[tools."aqua:minio/mc"."platforms.linux-arm64"]
checksum = "sha256:ac7448b6d3188fb94cea48c762d700584e7a0e467e21e1be4cfc823755c026eb"
url = "https://dl.min.io/client/mc/release/linux-arm64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools."aqua:minio/mc"."platforms.linux-arm64-musl"]
checksum = "sha256:ac7448b6d3188fb94cea48c762d700584e7a0e467e21e1be4cfc823755c026eb"
url = "https://dl.min.io/client/mc/release/linux-arm64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools."aqua:minio/mc"."platforms.linux-x64"]
checksum = "sha256:43d44d801a936e48390c8d2dc02c1c1cc1e973becbe71897f28ca06a9f456489"
url = "https://dl.min.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools."aqua:minio/mc"."platforms.linux-x64-musl"]
checksum = "sha256:43d44d801a936e48390c8d2dc02c1c1cc1e973becbe71897f28ca06a9f456489"
url = "https://dl.min.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools."aqua:minio/mc"."platforms.macos-arm64"]
checksum = "sha256:0ffce1b14eff6b3d410ed400ffbf0530ff4b11d8372115f1afa6f9b483ba5a40"
url = "https://dl.min.io/client/mc/release/darwin-arm64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools."aqua:minio/mc"."platforms.macos-x64"]
checksum = "sha256:90407d70b69de8251731ed8cf644dd78836c49f1b3f559ae0c2b70dedeaf79aa"
url = "https://dl.min.io/client/mc/release/darwin-amd64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[tools.atlas]
[tools."aqua:minio/mc"."platforms.windows-x64"]
checksum = "sha256:45fb732d67cf26a1568c3750a1629d762c2f7b6990995cd02c4b1bb0c3de5770"
url = "https://dl.min.io/client/mc/release/windows-amd64/archive/mc.RELEASE.2025-04-08T15-39-49Z"

[[tools.atlas]]
version = "0.32.0"
backend = "aqua:ariga/atlas"

[tools.go]
[tools.atlas."platforms.linux-arm64"]
checksum = "sha256:15eda758084b52358a477bf7f8b8093ef811ec6e31f635095d0c41a8ebe6aa52"
url = "https://release.ariga.io/atlas/atlas-linux-arm64-v0.32.0"

[tools.atlas."platforms.linux-arm64-musl"]
checksum = "sha256:15eda758084b52358a477bf7f8b8093ef811ec6e31f635095d0c41a8ebe6aa52"
url = "https://release.ariga.io/atlas/atlas-linux-arm64-v0.32.0"

[tools.atlas."platforms.linux-x64"]
checksum = "sha256:8160a357160142239b84b8ebdf70f7af70df8ccefe297299f43cc67470532004"
url = "https://release.ariga.io/atlas/atlas-linux-amd64-v0.32.0"

[tools.atlas."platforms.linux-x64-musl"]
checksum = "sha256:8160a357160142239b84b8ebdf70f7af70df8ccefe297299f43cc67470532004"
url = "https://release.ariga.io/atlas/atlas-linux-amd64-v0.32.0"

[tools.atlas."platforms.macos-arm64"]
checksum = "sha256:a8fb30231d80e2962b121dcbb073fff063a2104b11bb6c1d0f67477db3b728c8"
url = "https://release.ariga.io/atlas/atlas-darwin-arm64-v0.32.0"

[tools.atlas."platforms.macos-x64"]
checksum = "sha256:ba8f6c148328adc774cdc87316eb05c0d0461bb2a763d4c220686dd35a41df0f"
url = "https://release.ariga.io/atlas/atlas-darwin-amd64-v0.32.0"

[tools.atlas."platforms.windows-x64"]
checksum = "sha256:53bcef1bb201eec85406025472f6d86626f360b05dacfea808e595a85d8ce632"
url = "https://release.ariga.io/atlas/atlas-windows-amd64-v0.32.0.exe"

[[tools.go]]
version = "1.24.4"
backend = "core:go"

[tools.go.checksums]
"go1.24.4.linux-amd64.tar.gz" = "sha256:77e5da33bb72aeaef1ba4418b6fe511bc4d041873cbf82e5aa6318740df98717"
[tools.go."platforms.linux-arm64"]
checksum = "sha256:d5501ee5aca0f258d5fe9bfaed401958445014495dc115f202d43d5210b45241"
url = "https://dl.google.com/go/go1.24.4.linux-arm64.tar.gz"

[tools.go."platforms.linux-arm64-musl"]
checksum = "sha256:d5501ee5aca0f258d5fe9bfaed401958445014495dc115f202d43d5210b45241"
url = "https://dl.google.com/go/go1.24.4.linux-arm64.tar.gz"

[tools.go."platforms.linux-x64"]
checksum = "sha256:77e5da33bb72aeaef1ba4418b6fe511bc4d041873cbf82e5aa6318740df98717"
url = "https://dl.google.com/go/go1.24.4.linux-amd64.tar.gz"

[tools.go."platforms.linux-x64-musl"]
checksum = "sha256:77e5da33bb72aeaef1ba4418b6fe511bc4d041873cbf82e5aa6318740df98717"
url = "https://dl.google.com/go/go1.24.4.linux-amd64.tar.gz"

[tools.go-junit-report]
[tools.go."platforms.macos-arm64"]
checksum = "sha256:27973684b515eaf461065054e6b572d9390c05e69ba4a423076c160165336470"
url = "https://dl.google.com/go/go1.24.4.darwin-arm64.tar.gz"

[tools.go."platforms.macos-x64"]
checksum = "sha256:69bef555e114b4a2252452b6e7049afc31fbdf2d39790b669165e89525cd3f5c"
url = "https://dl.google.com/go/go1.24.4.darwin-amd64.tar.gz"

[tools.go."platforms.windows-x64"]
checksum = "sha256:b751a1136cb9d8a2e7ebb22c538c4f02c09b98138c7c8bfb78a54a4566c013b1"
url = "https://dl.google.com/go/go1.24.4.windows-amd64.zip"

[[tools.go-junit-report]]
version = "2.1.0"
backend = "ubi:jstemmer/go-junit-report"
backend = "aqua:jstemmer/go-junit-report"

[tools.go-junit-report."platforms.linux-x64"]
url = "https://github.com/jstemmer/go-junit-report/releases/download/v2.1.0/go-junit-report-v2.1.0-linux-amd64.tar.gz"

[tools.go-junit-report."platforms.linux-x64-musl"]
url = "https://github.com/jstemmer/go-junit-report/releases/download/v2.1.0/go-junit-report-v2.1.0-linux-amd64.tar.gz"

[tools.golangci-lint]
[tools.go-junit-report."platforms.macos-arm64"]
url = "https://github.com/jstemmer/go-junit-report/releases/download/v2.1.0/go-junit-report-v2.1.0-darwin-arm64.tar.gz"

[tools.go-junit-report."platforms.macos-x64"]
url = "https://github.com/jstemmer/go-junit-report/releases/download/v2.1.0/go-junit-report-v2.1.0-darwin-amd64.tar.gz"

[tools.go-junit-report."platforms.windows-x64"]
url = "https://github.com/jstemmer/go-junit-report/releases/download/v2.1.0/go-junit-report-v2.1.0-windows-amd64.zip"

[[tools.golangci-lint]]
version = "2.1.6"
backend = "aqua:golangci/golangci-lint"

[tools.golangci-lint.checksums]
"golangci-lint-2.1.6-linux-amd64.tar.gz" = "sha256:e55e0eb515936c0fbd178bce504798a9bd2f0b191e5e357768b18fd5415ee541"
[tools.golangci-lint."platforms.linux-arm64"]
checksum = "sha256:582eb73880f4408d7fb89f12b502d577bd7b0b63d8c681da92bb6b9d934d4363"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-linux-arm64.tar.gz"

[tools.golangci-lint."platforms.linux-arm64-musl"]
checksum = "sha256:582eb73880f4408d7fb89f12b502d577bd7b0b63d8c681da92bb6b9d934d4363"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-linux-arm64.tar.gz"

[tools.golangci-lint."platforms.linux-x64"]
checksum = "sha256:e55e0eb515936c0fbd178bce504798a9bd2f0b191e5e357768b18fd5415ee541"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-linux-amd64.tar.gz"

[tools.golangci-lint."platforms.linux-x64-musl"]
checksum = "sha256:e55e0eb515936c0fbd178bce504798a9bd2f0b191e5e357768b18fd5415ee541"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-linux-amd64.tar.gz"

[tools.protoc]
[tools.golangci-lint."platforms.macos-arm64"]
checksum = "sha256:90783fa092a0f64a4f7b7d419f3da1f53207e300261773babe962957240e9ea6"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-darwin-arm64.tar.gz"

[tools.golangci-lint."platforms.macos-x64"]
checksum = "sha256:e091107c4ca7e283902343ba3a09d14fb56b86e071effd461ce9d67193ef580e"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-darwin-amd64.tar.gz"

[tools.golangci-lint."platforms.windows-x64"]
checksum = "sha256:fd7298019c76cf414ab083491f87f6c0a3e537ed6d727d6ff9135e503d6f9c32"
url = "https://github.com/golangci/golangci-lint/releases/download/v2.1.6/golangci-lint-2.1.6-windows-amd64.zip"

[[tools.protoc]]
version = "31.1"
backend = "aqua:protocolbuffers/protobuf/protoc"

[tools.protoc.checksums]
"protoc-31.1-linux-x86_64.zip" = "sha256:96553041f1a91ea0efee963cb16f462f5985b4d65365f3907414c360044d8065"
[tools.protoc."platforms.linux-arm64"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-aarch_64.zip"

[tools.protoc."platforms.linux-arm64-musl"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-aarch_64.zip"

[tools.protoc."platforms.linux-x64"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip"

[tools.protoc-gen-go]
[tools.protoc."platforms.linux-x64-musl"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip"

[tools.protoc."platforms.macos-arm64"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-osx-aarch_64.zip"

[tools.protoc."platforms.macos-x64"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-osx-x86_64.zip"

[tools.protoc."platforms.windows-x64"]
url = "https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-win64.zip"

[[tools.protoc-gen-go]]
version = "1.36.6"
backend = "aqua:protocolbuffers/protobuf-go/protoc-gen-go"

[tools.protoc-gen-go-grpc]
[tools.protoc-gen-go."platforms.linux-arm64"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.linux.arm64.tar.gz"

[tools.protoc-gen-go."platforms.linux-arm64-musl"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.linux.arm64.tar.gz"

[tools.protoc-gen-go."platforms.linux-x64"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.linux.amd64.tar.gz"

[tools.protoc-gen-go."platforms.linux-x64-musl"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.linux.amd64.tar.gz"

[tools.protoc-gen-go."platforms.macos-arm64"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.darwin.arm64.tar.gz"

[tools.protoc-gen-go."platforms.macos-x64"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.darwin.amd64.tar.gz"

[tools.protoc-gen-go."platforms.windows-x64"]
url = "https://github.com/protocolbuffers/protobuf-go/releases/download/v1.36.6/protoc-gen-go.v1.36.6.windows.amd64.zip"

[[tools.protoc-gen-go-grpc]]
version = "1.5.1"
backend = "aqua:grpc/grpc-go/protoc-gen-go-grpc"
2 changes: 1 addition & 1 deletion mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ run = "go test -v -coverprofile=coverage.txt -covermode=atomic -coverpkg=./... -
run = "go test -v -coverprofile=coverage.txt -covermode=atomic -coverpkg=./... -p 1 -timeout 1h ./... 2>&1 | go-junit-report -iocopy -set-exit-code -out junit.xml"

[tasks.migrate_hash]
run = "atlas migrate hash --dir \"file://migrations/sql?format=golang-migrate\""
run = 'atlas migrate hash --dir file://migrations/sql?format=golang-migrate'

[tasks.generate]
run = "go generate -tags tools -x ./..."
Expand Down
Loading
Loading