# Column

**Kind:** Class

**Source:** `Pams/Web/Pams.Web/Client/app/models/dashboard/data-source-schema/column.model.ts` (line 2)

**Part of:** [Pams](subsystem-pams)

`Column` models a column in a dashboard data-source schema. It supports copying a single column with `clone()` and copying column collections with `cloneList()`.

## Methods

| Method | Signature | Returns |
|---|---|---|
| `cloneList` | `cloneList(model: Column[])` | `void` |
| `clone` | `clone(model: Column)` | `void` |

## Properties

| Property | Type |
|---|---|
| `Id` | `string` |
| `Name` | `string` |
| `ColumnId` | `string` |
| `ColumnFullName` | `string` |
| `IsPrimary` | `boolean` |
| `IsForeign` | `boolean` |
| `IsIdentity` | `boolean` |
| `AllowNull` | `boolean` |
| `IsComputed` | `boolean` |
| `ColumnDataType` | `ColumnDataType` |
| `IsSelected` | `boolean` |

## Where it refuses work

- `Column` stops the work with an early return when `model == null || model.length == 0`.
- `Column` stops the work with an early return when `model == null`.

## Diagram

```mermaid
graph LR
  Schema[Data-source schema] --> Columns[Column list]
  Columns --> Column[Column]
  Column --> Clone[clone()]
  Columns --> CloneList[cloneList()]
```

## Usage

```ts
import { Column } from './models/dashboard/data-source-schema/column.model';

const column = new Column();

const copiedColumn = column.clone();

const columns: Column[] = [column];
const copiedColumns = Column.cloneList(columns);
```

## AI Coding Instructions

- Use `clone()` when a caller needs an independent `Column` instance.
- Use `Column.cloneList()` when copying schema column arrays.
- Keep clone behavior aligned with the fields added to `Column`.
- Avoid sharing mutable column instances between schema editing flows.

## Relationships

- IMPORTS → `ColumnDataType`

## Used by

3 references from 3 files. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.

### Imported by (3)

- `DataSourceService` — `Pams/Web/Pams.Web/Client/app/services/dashboard/data-source.service.ts`:1
- `Table` — `Pams/Web/Pams.Web/Client/app/models/dashboard/data-source-schema/table.model.ts`:4
- `View` — `Pams/Web/Pams.Web/Client/app/models/dashboard/data-source-schema/view.model.ts`:4
