UNPKG

@altostra/core

Version:

Core library for shared types and logic

61 lines (60 loc) 2.83 kB
import type { ResourceDeletionPolicies } from "../../../aws/CloudFormation"; import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString"; import type { NaturalNumber } from "../../../common/CustomTypes/Numerics"; import type { Dict } from "../../../common/Types"; import type { ObjectValidations } from '@altostra/type-validations'; import type { MultiVendorProperty, ResourceBase, StorageEncryption, VPC } from "../Common"; export interface RelationalDBResourceBase extends ResourceBase { dbEngine: MultiVendorProperty<DBEngine>; masterUsername: NonEmptyString; deletionProtection: boolean; backupRetentionDays?: NaturalNumber; databaseName?: NonEmptyString; storageEncryption?: StorageEncryption; preferedBackupWindow?: TimeWindow; preferedMaintainanceWindow?: WeeklyTimeWindow; vpc?: VPC; deletionPolicy?: ResourceDeletionPolicies; } export interface RelationalDBNonServerlessResourceBase extends RelationalDBResourceBase { port?: NaturalNumber; publicAccessibility: boolean; } export interface DBEngine { engine: RelationalDBEngine; engineVersion: string; instanceClass: string; } export declare type RelationalDBEngine = 'mysql' | 'postgresql'; export interface Time { hours: NaturalNumber | 0; minutes?: NaturalNumber | 0; } export interface WeeklyTime extends Time { day: DayOfWeek; } export interface TimeWindow { start: Time; end: Time; } export interface WeeklyTimeWindow { start: WeeklyTime; end: WeeklyTime; } export declare type DayOfWeek = 'Sun' | 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat'; export declare const isDBEngine: import("@altostra/type-validations").ObjectOfTypeValidation<DBEngine>; export declare const isTime: import("@altostra/type-validations").ObjectOfTypeValidation<Time>; export declare const isTimeWindow: import("@altostra/type-validations").ObjectOfTypeValidation<TimeWindow>; export declare const isWeeklyTime: import("@altostra/type-validations").ObjectOfTypeValidation<WeeklyTime>; export declare const isWeeklyTimeWindow: import("@altostra/type-validations").ObjectOfTypeValidation<WeeklyTimeWindow>; declare type ValidatedRelationalDBResourceBase = Omit<RelationalDBResourceBase, 'type'>; export declare const relationalDBResourceBaseValidations: ObjectValidations<ValidatedRelationalDBResourceBase>; declare type RelationalDBNonServerlessResourceBaseValidations = ObjectValidations<Omit<RelationalDBNonServerlessResourceBase, 'type'>>; export declare const relationalDBNonServerlessResourceBaseValidations: RelationalDBNonServerlessResourceBaseValidations; export interface EngineVersionSpec { validInstances: string[]; family: string; isDeprecated?: boolean; } export declare function getValidVersions(versions: Dict<EngineVersionSpec>): string[]; export {};