# API `@deepkit/postgres`

```shell
npm install @deepkit/postgres
```

```typescript
import { PostgresDatabaseAdapter } from '@deepkit/mongo';
import { Database } from '@deepkit/orm';

const adapter = new PostgresDatabaseAdapter('postgres://user:password@localhost/mydatabase');
// const adapter = new PostgresDatabaseAdapter({ host: 'localhost', database: 'postgres', user: 'postgres' });

const database = new Database(adapter);
```


## API reference of @deepkit/postgres

### parseConnectionString (function)

```typescript
(url: string): PoolConfig
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/config.ts#L27

### PostgresStatement (class)

```typescript
export class PostgresStatement extends SQLStatement {
    constructor(protected logger: Logger, protected sql: string, protected client: PoolClient, protected stopwatch?: Stopwatch, protected reusable?: PostgresReusableStatement, protected inTransaction: boolean = false);
    async get(params: any[] = []);
    async all(params: any[] = []);
    release();
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L102

### PostgresConnection (class)

```typescript
export class PostgresConnection extends SQLConnection {
    lastReturningRows: any[];
    constructor(connectionPool: PostgresConnectionPool, public connection: PoolClient, logger: Logger, transaction?: DatabaseTransaction, stopwatch?: Stopwatch);
    async prepare(sql: string);
    async run(sql: string, params: any[] = []);
    async getChanges(): Promise<number>;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L178

### TransactionTypes (type)

```typescript
type TransactionTypes = 'REPEATABLE READ' | 'READ COMMITTED' | 'SERIALIZABLE';
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L229

### PostgresDatabaseTransaction (class)

```typescript
export class PostgresDatabaseTransaction extends DatabaseTransaction {
    connection?: PostgresConnection;
    setTransaction?: TransactionTypes;
    /**
     * This is the default for mysql databases.
     */
    repeatableRead(): this;
    readCommitted(): this;
    serializable(): this;
    async begin();
    async commit();
    async rollback();
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L231

### PostgresConnectionPool (class)

```typescript
export class PostgresConnectionPool extends SQLConnectionPool {
    constructor(protected pool: Pool, protected logger: Logger, protected stopwatch?: Stopwatch);
    getReusableStatement(client: PoolClient, sql: string): PostgresReusableStatement | undefined;
    async getConnection(transaction?: PostgresDatabaseTransaction): Promise<PostgresConnection>;
    release(connection: PostgresConnection);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L279

### PostgresPersistence (class)

```typescript
export class PostgresPersistence extends SQLPersistence {
    constructor(protected platform: DefaultPlatform, public connectionPool: PostgresConnectionPool, session: DatabaseSession<any>);
    override handleSpecificError(error: Error): Error;
    async batchUpdate<T extends OrmEntity>(entity: PreparedEntity, changeSets: DatabasePersistenceChangeSet<T>[]): Promise<void>;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L362

### PostgresSQLQueryResolver (class)

```typescript
export class PostgresSQLQueryResolver<T extends OrmEntity> extends SQLQueryResolver<T> {
    async delete(model: SQLQueryModel<T>, deleteResult: DeleteResult<T>): Promise<void>;
    override handleSpecificError(error: Error): Error;
    async patch(model: SQLQueryModel<T>, changes: Changes<T>, patchResult: PatchResult<T>): Promise<void>;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L501

### PostgresSQLDatabaseQuery (class)

```typescript
export class PostgresSQLDatabaseQuery<T extends OrmEntity> extends SQLDatabaseQuery<T> {
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L652

### PostgresSQLDatabaseQueryFactory (class)

```typescript
export class PostgresSQLDatabaseQueryFactory extends SQLDatabaseQueryFactory {
    createQuery<T extends OrmEntity>(type?: ReceiveType<T> | ClassType<T> | AbstractClassType<T> | ReflectionClass<T>): PostgresSQLDatabaseQuery<T>;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L655

### PostgresDatabaseAdapter (class)

```typescript
export class PostgresDatabaseAdapter extends SQLDatabaseAdapter {
    connectionPool: PostgresConnectionPool;
    platform;
    closed;
    constructor(options: PoolConfig | string, additional: Partial<PoolConfig> = {});
    setLogger(logger: Logger);
    getName(): string;
    getSchemaName(): string;
    createPersistence(session: DatabaseSession<this>): SQLPersistence;
    createTransaction(session: DatabaseSession<this>): PostgresDatabaseTransaction;
    queryFactory(session: DatabaseSession<any>): SQLDatabaseQueryFactory;
    disconnect(force?: boolean): void;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-adapter.ts#L663

### PostgresPlaceholderStrategy (class)

```typescript
export class PostgresPlaceholderStrategy extends SqlPlaceholderStrategy {
    override getPlaceholder();
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-platform.ts#L73

### PostgresPlatform (class)

```typescript
export class PostgresPlatform extends DefaultPlatform {
    override annotationId;
    override readonly serializer: Serializer;
    override schemaParserType;
    override placeholderStrategy;
    constructor();
    override getSqlTypeCaster(type: Type): (placeholder: string) => string;
    override getAggregateSelect(tableName: string, property: ReflectionProperty, func: string);
    override createSqlFilterBuilder(adapter: PreparedAdapter, schema: ReflectionClass<any>, tableName: string): PostgreSQLFilterBuilder;
    override getDeepColumnAccessor(table: string, column: string, path: string);
    override quoteValue(value: any): string;
    override getColumnDDL(column: Column);
    getModifyColumnDDL(diff: ColumnDiff): string;
    getDefaultExpression(column: Column): string;
    getUniqueDDL(unique: IndexModel): string;
    getDropIndexDDL(index: IndexModel): string;
    supportsInlineForeignKey(): boolean;
    supportsAggregatedAlterTable(): boolean;
    supportsSelectFor(): boolean;
    getAutoIncrement();
    getDropTableDDL(table: Table): string;
    getUseSchemaDDL(table: Table);
    getResetSchemaDDL(table: Table): string;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-platform.ts#L79

### PostgresSchemaParser (class)

```typescript
export class PostgresSchemaParser extends SchemaParser {
    async parse(database: DatabaseModel, limitTableNames?: string[]);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-schema-parser.ts#L14

### postgresSerializer (variable)

```typescript
PostgresSerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/postgres/src/postgres-serializer.ts#L17
