@altostra/core
Version:
Core library for shared types and logic
61 lines (60 loc) • 2.83 kB
TypeScript
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 {};