Skip to content

Commit ccad199

Browse files
feat(client): add switch and match helpers for unions
1 parent 3d59690 commit ccad199

File tree

6 files changed

+297
-1
lines changed

6 files changed

+297
-1
lines changed

src/Scrapegraphai/Models/Crawl/CrawlRetrieveResultsResponseProperties/Result.cs

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,49 @@ public static implicit operator Result(JsonElement value) =>
1919

2020
public static implicit operator Result(string value) => new ResultVariants::String(value);
2121

22+
public bool TryPickJsonElement(out JsonElement? value)
23+
{
24+
value = (this as ResultVariants::JsonElement)?.Value;
25+
return value != null;
26+
}
27+
28+
public bool TryPickString(out string? value)
29+
{
30+
value = (this as ResultVariants::String)?.Value;
31+
return value != null;
32+
}
33+
34+
public void Switch(
35+
Action<ResultVariants::JsonElement> jsonElement,
36+
Action<ResultVariants::String> @string
37+
)
38+
{
39+
switch (this)
40+
{
41+
case ResultVariants::JsonElement inner:
42+
jsonElement(inner);
43+
break;
44+
case ResultVariants::String inner:
45+
@string(inner);
46+
break;
47+
default:
48+
throw new InvalidOperationException();
49+
}
50+
}
51+
52+
public T Match<T>(
53+
Func<ResultVariants::JsonElement, T> jsonElement,
54+
Func<ResultVariants::String, T> @string
55+
)
56+
{
57+
return this switch
58+
{
59+
ResultVariants::JsonElement inner => jsonElement(inner),
60+
ResultVariants::String inner => @string(inner),
61+
_ => throw new InvalidOperationException(),
62+
};
63+
}
64+
2265
public abstract void Validate();
2366
}
2467

@@ -64,7 +107,7 @@ public override void Write(Utf8JsonWriter writer, Result value, JsonSerializerOp
64107
object variant = value switch
65108
{
66109
ResultVariants::JsonElement(var jsonElement) => jsonElement,
67-
ResultVariants::String(var string1) => string1,
110+
ResultVariants::String(var @string) => @string,
68111
_ => throw new ArgumentOutOfRangeException(nameof(value)),
69112
};
70113
JsonSerializer.Serialize(writer, variant, options);

src/Scrapegraphai/Models/GenerateSchema/GenerateSchemaRetrieveResponse.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,63 @@ public static implicit operator GenerateSchemaRetrieveResponse(
2020
FailedSchemaGenerationResponse value
2121
) => new GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse(value);
2222

23+
public bool TryPickCompletedSchemaGenerationResponse(
24+
out CompletedSchemaGenerationResponse? value
25+
)
26+
{
27+
value = (
28+
this as GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse
29+
)?.Value;
30+
return value != null;
31+
}
32+
33+
public bool TryPickFailedSchemaGenerationResponse(out FailedSchemaGenerationResponse? value)
34+
{
35+
value = (
36+
this as GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse
37+
)?.Value;
38+
return value != null;
39+
}
40+
41+
public void Switch(
42+
Action<GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse> completedSchemaGenerationResponse,
43+
Action<GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse> failedSchemaGenerationResponse
44+
)
45+
{
46+
switch (this)
47+
{
48+
case GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse inner:
49+
completedSchemaGenerationResponse(inner);
50+
break;
51+
case GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse inner:
52+
failedSchemaGenerationResponse(inner);
53+
break;
54+
default:
55+
throw new InvalidOperationException();
56+
}
57+
}
58+
59+
public T Match<T>(
60+
Func<
61+
GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse,
62+
T
63+
> completedSchemaGenerationResponse,
64+
Func<
65+
GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse,
66+
T
67+
> failedSchemaGenerationResponse
68+
)
69+
{
70+
return this switch
71+
{
72+
GenerateSchemaRetrieveResponseVariants::CompletedSchemaGenerationResponse inner =>
73+
completedSchemaGenerationResponse(inner),
74+
GenerateSchemaRetrieveResponseVariants::FailedSchemaGenerationResponse inner =>
75+
failedSchemaGenerationResponse(inner),
76+
_ => throw new InvalidOperationException(),
77+
};
78+
}
79+
2380
public abstract void Validate();
2481
}
2582

src/Scrapegraphai/Models/Markdownify/MarkdownifyRetrieveStatusResponse.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,61 @@ public static implicit operator MarkdownifyRetrieveStatusResponse(
1919
FailedMarkdownifyResponse value
2020
) => new MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse(value);
2121

22+
public bool TryPickCompletedMarkdownifyVariant(out CompletedMarkdownify? value)
23+
{
24+
value = (
25+
this as MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant
26+
)?.Value;
27+
return value != null;
28+
}
29+
30+
public bool TryPickFailedMarkdownifyResponse(out FailedMarkdownifyResponse? value)
31+
{
32+
value = (
33+
this as MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse
34+
)?.Value;
35+
return value != null;
36+
}
37+
38+
public void Switch(
39+
Action<MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant> completedMarkdownify,
40+
Action<MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse> failedMarkdownifyResponse
41+
)
42+
{
43+
switch (this)
44+
{
45+
case MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant inner:
46+
completedMarkdownify(inner);
47+
break;
48+
case MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse inner:
49+
failedMarkdownifyResponse(inner);
50+
break;
51+
default:
52+
throw new InvalidOperationException();
53+
}
54+
}
55+
56+
public T Match<T>(
57+
Func<
58+
MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant,
59+
T
60+
> completedMarkdownify,
61+
Func<
62+
MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse,
63+
T
64+
> failedMarkdownifyResponse
65+
)
66+
{
67+
return this switch
68+
{
69+
MarkdownifyRetrieveStatusResponseVariants::CompletedMarkdownifyVariant inner =>
70+
completedMarkdownify(inner),
71+
MarkdownifyRetrieveStatusResponseVariants::FailedMarkdownifyResponse inner =>
72+
failedMarkdownifyResponse(inner),
73+
_ => throw new InvalidOperationException(),
74+
};
75+
}
76+
2277
public abstract void Validate();
2378
}
2479

src/Scrapegraphai/Models/Searchscraper/SearchscraperRetrieveStatusResponse.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,61 @@ public static implicit operator SearchscraperRetrieveStatusResponse(
2020
FailedSearchScraperResponse value
2121
) => new SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse(value);
2222

23+
public bool TryPickCompletedSearchScraperVariant(out CompletedSearchScraper? value)
24+
{
25+
value = (
26+
this as SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant
27+
)?.Value;
28+
return value != null;
29+
}
30+
31+
public bool TryPickFailedSearchScraperResponse(out FailedSearchScraperResponse? value)
32+
{
33+
value = (
34+
this as SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse
35+
)?.Value;
36+
return value != null;
37+
}
38+
39+
public void Switch(
40+
Action<SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant> completedSearchScraper,
41+
Action<SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse> failedSearchScraperResponse
42+
)
43+
{
44+
switch (this)
45+
{
46+
case SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant inner:
47+
completedSearchScraper(inner);
48+
break;
49+
case SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse inner:
50+
failedSearchScraperResponse(inner);
51+
break;
52+
default:
53+
throw new InvalidOperationException();
54+
}
55+
}
56+
57+
public T Match<T>(
58+
Func<
59+
SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant,
60+
T
61+
> completedSearchScraper,
62+
Func<
63+
SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse,
64+
T
65+
> failedSearchScraperResponse
66+
)
67+
{
68+
return this switch
69+
{
70+
SearchscraperRetrieveStatusResponseVariants::CompletedSearchScraperVariant inner =>
71+
completedSearchScraper(inner),
72+
SearchscraperRetrieveStatusResponseVariants::FailedSearchScraperResponse inner =>
73+
failedSearchScraperResponse(inner),
74+
_ => throw new InvalidOperationException(),
75+
};
76+
}
77+
2378
public abstract void Validate();
2479
}
2580

src/Scrapegraphai/Models/Smartscraper/SmartscraperListResponse.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,49 @@ public static implicit operator SmartscraperListResponse(CompletedSmartscraper v
1717
public static implicit operator SmartscraperListResponse(FailedSmartscraper value) =>
1818
new FailedSmartscraperVariant(value);
1919

20+
public bool TryPickCompletedSmartscraperVariant(out CompletedSmartscraper? value)
21+
{
22+
value = (this as CompletedSmartscraperVariant)?.Value;
23+
return value != null;
24+
}
25+
26+
public bool TryPickFailedSmartscraperVariant(out FailedSmartscraper? value)
27+
{
28+
value = (this as FailedSmartscraperVariant)?.Value;
29+
return value != null;
30+
}
31+
32+
public void Switch(
33+
Action<CompletedSmartscraperVariant> completedSmartscraper,
34+
Action<FailedSmartscraperVariant> failedSmartscraper
35+
)
36+
{
37+
switch (this)
38+
{
39+
case CompletedSmartscraperVariant inner:
40+
completedSmartscraper(inner);
41+
break;
42+
case FailedSmartscraperVariant inner:
43+
failedSmartscraper(inner);
44+
break;
45+
default:
46+
throw new InvalidOperationException();
47+
}
48+
}
49+
50+
public T Match<T>(
51+
Func<CompletedSmartscraperVariant, T> completedSmartscraper,
52+
Func<FailedSmartscraperVariant, T> failedSmartscraper
53+
)
54+
{
55+
return this switch
56+
{
57+
CompletedSmartscraperVariant inner => completedSmartscraper(inner),
58+
FailedSmartscraperVariant inner => failedSmartscraper(inner),
59+
_ => throw new InvalidOperationException(),
60+
};
61+
}
62+
2063
public abstract void Validate();
2164
}
2265

src/Scrapegraphai/Models/Smartscraper/SmartscraperRetrieveResponse.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,49 @@ public static implicit operator SmartscraperRetrieveResponse(CompletedSmartscrap
1717
public static implicit operator SmartscraperRetrieveResponse(FailedSmartscraper value) =>
1818
new FailedSmartscraperVariant(value);
1919

20+
public bool TryPickCompletedSmartscraperVariant(out CompletedSmartscraper? value)
21+
{
22+
value = (this as CompletedSmartscraperVariant)?.Value;
23+
return value != null;
24+
}
25+
26+
public bool TryPickFailedSmartscraperVariant(out FailedSmartscraper? value)
27+
{
28+
value = (this as FailedSmartscraperVariant)?.Value;
29+
return value != null;
30+
}
31+
32+
public void Switch(
33+
Action<CompletedSmartscraperVariant> completedSmartscraper,
34+
Action<FailedSmartscraperVariant> failedSmartscraper
35+
)
36+
{
37+
switch (this)
38+
{
39+
case CompletedSmartscraperVariant inner:
40+
completedSmartscraper(inner);
41+
break;
42+
case FailedSmartscraperVariant inner:
43+
failedSmartscraper(inner);
44+
break;
45+
default:
46+
throw new InvalidOperationException();
47+
}
48+
}
49+
50+
public T Match<T>(
51+
Func<CompletedSmartscraperVariant, T> completedSmartscraper,
52+
Func<FailedSmartscraperVariant, T> failedSmartscraper
53+
)
54+
{
55+
return this switch
56+
{
57+
CompletedSmartscraperVariant inner => completedSmartscraper(inner),
58+
FailedSmartscraperVariant inner => failedSmartscraper(inner),
59+
_ => throw new InvalidOperationException(),
60+
};
61+
}
62+
2063
public abstract void Validate();
2164
}
2265

0 commit comments

Comments
 (0)