mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 11:38:55 +00:00
68 lines
2.4 KiB
TypeScript
68 lines
2.4 KiB
TypeScript
import z from "zod";
|
|
|
|
import { AppConnections } from "@app/lib/api-docs";
|
|
import {
|
|
BaseAppConnectionSchema,
|
|
GenericCreateAppConnectionFieldsSchema,
|
|
GenericUpdateAppConnectionFieldsSchema
|
|
} from "@app/services/app-connection/app-connection-schemas";
|
|
|
|
import { AppConnection } from "../app-connection-enums";
|
|
import { BaseSqlUsernameAndPasswordConnectionSchema } from "../shared/sql";
|
|
import { MsSqlConnectionMethod } from "./mssql-connection-enums";
|
|
|
|
export const MsSqlConnectionAccessTokenCredentialsSchema = BaseSqlUsernameAndPasswordConnectionSchema;
|
|
|
|
const BaseMsSqlConnectionSchema = BaseAppConnectionSchema.extend({
|
|
app: z.literal(AppConnection.MsSql)
|
|
});
|
|
|
|
export const MsSqlConnectionSchema = BaseMsSqlConnectionSchema.extend({
|
|
method: z.literal(MsSqlConnectionMethod.UsernameAndPassword),
|
|
credentials: MsSqlConnectionAccessTokenCredentialsSchema
|
|
});
|
|
|
|
export const SanitizedMsSqlConnectionSchema = z.discriminatedUnion("method", [
|
|
BaseMsSqlConnectionSchema.extend({
|
|
method: z.literal(MsSqlConnectionMethod.UsernameAndPassword),
|
|
credentials: MsSqlConnectionAccessTokenCredentialsSchema.pick({
|
|
host: true,
|
|
database: true,
|
|
port: true,
|
|
username: true,
|
|
sslEnabled: true,
|
|
sslRejectUnauthorized: true
|
|
})
|
|
})
|
|
]);
|
|
|
|
export const ValidateMsSqlConnectionCredentialsSchema = z.discriminatedUnion("method", [
|
|
z.object({
|
|
method: z
|
|
.literal(MsSqlConnectionMethod.UsernameAndPassword)
|
|
.describe(AppConnections.CREATE(AppConnection.MsSql).method),
|
|
credentials: MsSqlConnectionAccessTokenCredentialsSchema.describe(
|
|
AppConnections.CREATE(AppConnection.MsSql).credentials
|
|
)
|
|
})
|
|
]);
|
|
|
|
export const CreateMsSqlConnectionSchema = ValidateMsSqlConnectionCredentialsSchema.and(
|
|
GenericCreateAppConnectionFieldsSchema(AppConnection.MsSql, { supportsPlatformManagedCredentials: true })
|
|
);
|
|
|
|
export const UpdateMsSqlConnectionSchema = z
|
|
.object({
|
|
credentials: MsSqlConnectionAccessTokenCredentialsSchema.optional().describe(
|
|
AppConnections.UPDATE(AppConnection.MsSql).credentials
|
|
)
|
|
})
|
|
.and(GenericUpdateAppConnectionFieldsSchema(AppConnection.MsSql, { supportsPlatformManagedCredentials: true }));
|
|
|
|
export const MsSqlConnectionListItemSchema = z.object({
|
|
name: z.literal("Microsoft SQL Server"),
|
|
app: z.literal(AppConnection.MsSql),
|
|
methods: z.nativeEnum(MsSqlConnectionMethod).array(),
|
|
supportsPlatformManagement: z.literal(true)
|
|
});
|