The code is very easy:
import * as gcp from '@pulumi/gcp';
import * as pulumi from '@pulumi/pulumi';
import { ManagedDatabaseInfo } from '../schema';
export class AppDatabaseManaged extends pulumi.ComponentResource {
public readonly uri: pulumi.Output<string>;
constructor(args: ManagedDatabaseInfo, opts?: pulumi.ResourceOptions) {
super('sys:app:Database-managed', args.name, args, opts);
const user = new gcp.sql.User(
`${args.name}-user`,
{
instance: 'app-dev',
name: args.user.name,
password: args.user.password,
project: args.project,
},
{
parent: this,
customTimeouts: { create: '45s', update: '45s', delete: '45s' },
},
);
const db = new gcp.sql.Database(
`${args.name}-pgdatabase`,
{
instance: 'app-dev',
name: args.name,
project: args.project,
},
{
parent: this,
customTimeouts: { create: '45s', update: '45s', delete: '45s' },
},
);
this.uri = pulumi.output(
pulumi.interpolate`postgresql://${user.name}:${user.password}@${args.publicIpAddress}:5432/${db.name}`,
);
}
}