From 48191ebe049afdb561c9b76b161ad9bac388dff1 Mon Sep 17 00:00:00 2001 From: Nathan Musoke Date: Thu, 6 Apr 2023 18:20:02 -0400 Subject: [PATCH] feat: Deep water solo discipline --- src/GradeUtils.ts | 7 ++++++- src/__tests__/gradeUtils.ts | 12 ++++++++++++ src/db/AreaSchema.ts | 1 + src/db/AreaTypes.ts | 1 + src/db/ClimbTypes.ts | 2 ++ src/db/export/Typesense/Utils.ts | 2 ++ src/graphql/schema/Area.gql | 1 + src/graphql/schema/Climb.gql | 2 ++ src/graphql/schema/ClimbEdit.gql | 2 ++ src/model/__tests__/MutableClimbDataSource.ts | 6 ++++++ 10 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/GradeUtils.ts b/src/GradeUtils.ts index feac6bef..645e9ab5 100644 --- a/src/GradeUtils.ts +++ b/src/GradeUtils.ts @@ -42,6 +42,7 @@ export const gradeContextToGradeScales: Partial ({ trad: false, sport: false, bouldering: false, + deepwatersolo: false, alpine: false, snow: false, ice: false, diff --git a/src/__tests__/gradeUtils.ts b/src/__tests__/gradeUtils.ts index e481ae61..8d6e0968 100644 --- a/src/__tests__/gradeUtils.ts +++ b/src/__tests__/gradeUtils.ts @@ -13,6 +13,7 @@ describe('Test grade utilities', () => { trad: true, sport: false, bouldering: false, + deepwatersolo: false, alpine: false, snow: false, ice: false, @@ -28,6 +29,7 @@ describe('Test grade utilities', () => { trad: false, sport: false, bouldering: true, + deepwatersolo: false, alpine: false, snow: false, ice: false, @@ -52,6 +54,11 @@ describe('Test grade utilities', () => { vscale: 'V4' }) + actual = createGradeObject('5.10a', sanitizeDisciplines({ deepwatersolo: true }), context) + expect(actual).toEqual({ + yds: '5.10a' + }) + // mismatch input and discipline actual = createGradeObject('V4', sanitizeDisciplines({ trad: true }), context) expect(actual).toBeUndefined() @@ -94,6 +101,11 @@ describe('Test grade utilities', () => { font: '7c' }) + actual = createGradeObject('7c+', sanitizeDisciplines({ deepwatersolo: true }), context) + expect(actual).toEqual({ + french: '7c+' + }) + // Invalid input actual = createGradeObject('5.9', sanitizeDisciplines({ bouldering: true }), context) expect(actual).toBeUndefined() diff --git a/src/db/AreaSchema.ts b/src/db/AreaSchema.ts index 9cce8361..e27ded05 100644 --- a/src/db/AreaSchema.ts +++ b/src/db/AreaSchema.ts @@ -73,6 +73,7 @@ export const CountByDisciplineSchema = new Schema({ trad: { type: DisciplineStatsSchema, required: false }, sport: { type: DisciplineStatsSchema, required: false }, bouldering: { type: DisciplineStatsSchema, required: false }, + deepwatersolo: { type: DisciplineStatsSchema, required: false }, alpine: { type: DisciplineStatsSchema, required: false }, snow: { type: DisciplineStatsSchema, required: false }, ice: { type: DisciplineStatsSchema, required: false }, diff --git a/src/db/AreaTypes.ts b/src/db/AreaTypes.ts index 141114c9..ecab105b 100644 --- a/src/db/AreaTypes.ts +++ b/src/db/AreaTypes.ts @@ -192,6 +192,7 @@ export interface CountByDisciplineType { trad?: DisciplineStatsType sport?: DisciplineStatsType bouldering?: DisciplineStatsType + deepwatersolo?: DisciplineStatsType alpine?: DisciplineStatsType snow?: DisciplineStatsType ice?: DisciplineStatsType diff --git a/src/db/ClimbTypes.ts b/src/db/ClimbTypes.ts index 7c9769fa..b17db6a9 100644 --- a/src/db/ClimbTypes.ts +++ b/src/db/ClimbTypes.ts @@ -103,6 +103,8 @@ export interface DisciplineType { sport?: boolean /** https://en.wikipedia.org/wiki/Bouldering */ bouldering?: boolean + /** https://en.wikipedia.org/wiki/Deep-water_soloing */ + deepwatersolo?: boolean /** https://en.wikipedia.org/wiki/Alpine_climbing */ alpine?: boolean /** https://en.wikipedia.org/wiki/Ice_climbing */ diff --git a/src/db/export/Typesense/Utils.ts b/src/db/export/Typesense/Utils.ts index c259eb88..2165d0ae 100644 --- a/src/db/export/Typesense/Utils.ts +++ b/src/db/export/Typesense/Utils.ts @@ -7,6 +7,7 @@ export interface IFlatClimbTypes { typeTrad: boolean typeTR: boolean typeBouldering: boolean + typeDeepWaterSolo: boolean typeMixed: boolean typeAlpine: boolean typeSnow: boolean @@ -20,6 +21,7 @@ export const flattenDisciplines = (type: DisciplineType): IFlatClimbTypes => { typeTrad: type?.trad ?? false, typeTR: type?.tr ?? false, typeBouldering: type?.bouldering ?? false, + typeDeepWaterSolo: type?.deepwatersolo ?? false, typeMixed: type?.mixed ?? false, typeAlpine: type?.alpine ?? false, typeSnow: type?.snow ?? false, diff --git a/src/graphql/schema/Area.gql b/src/graphql/schema/Area.gql index ec4ed12b..4fd89359 100644 --- a/src/graphql/schema/Area.gql +++ b/src/graphql/schema/Area.gql @@ -126,6 +126,7 @@ type CountByDisciplineType { sport: DisciplineStatsType bouldering: DisciplineStatsType boulder: DisciplineStatsType @deprecated(reason: "Migrating to 'bouldering'") + deepwatersolo: DisciplineStatsType alpine: DisciplineStatsType snow: DisciplineStatsType ice: DisciplineStatsType diff --git a/src/graphql/schema/Climb.gql b/src/graphql/schema/Climb.gql index 02490a84..53b6f26b 100644 --- a/src/graphql/schema/Climb.gql +++ b/src/graphql/schema/Climb.gql @@ -112,6 +112,8 @@ type ClimbType { sport: Boolean "https://en.wikipedia.org/wiki/Bouldering" bouldering: Boolean + "https://en.wikipedia.org/wiki/Deep-water_soloing" + deepwatersolo: Boolean "https://en.wikipedia.org/wiki/Alpine_climbing" alpine: Boolean "https://en.wikipedia.org/wiki/Ice_climbing" diff --git a/src/graphql/schema/ClimbEdit.gql b/src/graphql/schema/ClimbEdit.gql index a82284b6..8ec92446 100644 --- a/src/graphql/schema/ClimbEdit.gql +++ b/src/graphql/schema/ClimbEdit.gql @@ -52,6 +52,8 @@ input DisciplineType { sport: Boolean "https://en.wikipedia.org/wiki/Bouldering" bouldering: Boolean + "https://en.wikipedia.org/wiki/Deep-water_soloing" + deepwatersolo: Boolean "https://en.wikipedia.org/wiki/Alpine_climbing" alpine: Boolean "https://en.wikipedia.org/wiki/Ice_climbing" diff --git a/src/model/__tests__/MutableClimbDataSource.ts b/src/model/__tests__/MutableClimbDataSource.ts index bd900818..f2b722a8 100644 --- a/src/model/__tests__/MutableClimbDataSource.ts +++ b/src/model/__tests__/MutableClimbDataSource.ts @@ -29,6 +29,12 @@ describe('Climb CRUD', () => { location: '5m left of the big tree', protection: '5 quickdraws' }, + { + name: 'Deep water 1', + disciplines: { + deepwatersolo: true + } + }, { name: 'Cool trad one', disciplines: {