mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-02-07 14:19:18 +00:00
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import { getClient } from '../client'
|
|
import {User} from "./user";
|
|
import {Table} from "./table";
|
|
|
|
export class Field {
|
|
constructor(
|
|
public id: number,
|
|
public name: string,
|
|
public type: string,
|
|
public table:Table,
|
|
public fieldSettings: any
|
|
) {
|
|
}
|
|
|
|
get primary(): boolean {
|
|
return this.fieldSettings.primary;
|
|
}
|
|
}
|
|
|
|
export async function createField(user: User, fieldName: string, type: string, fieldSettings: any, table: Table): Promise<Field> {
|
|
const response: any = await getClient(user).post(`database/fields/table/${table.id}/`, {
|
|
name: fieldName,
|
|
type: type,
|
|
...fieldSettings
|
|
})
|
|
const field1 = new Field(
|
|
response.data.id,
|
|
response.data.name,
|
|
response.data.type,
|
|
table,
|
|
response.data
|
|
);
|
|
console.log(`created field ${field1.name} in ${field1.table.name}`)
|
|
return field1
|
|
}
|
|
|
|
export async function updateField(user: User, fieldName: string, type: string, fieldSettings: any, field: Field): Promise<Field> {
|
|
const data = {
|
|
name: fieldName,
|
|
type: type,
|
|
...fieldSettings
|
|
};
|
|
const response: any = await getClient(user).patch(`database/fields/${field.id}/`, data)
|
|
const f = new Field(
|
|
response.data.id,
|
|
response.data.name,
|
|
response.data.type,
|
|
field.table,
|
|
response.data
|
|
)
|
|
console.log(`update field ${field.name} in ${f.name} in ${f.table.name}`)
|
|
return f
|
|
}
|
|
|
|
export async function deleteField(user: User, field: Field): Promise<void> {
|
|
console.log(`deleting field ${field.name} in ${field.table.name}`)
|
|
await getClient(user).delete(`database/fields/${field.id}/`)
|
|
}
|
|
|
|
export async function getFieldsForTable(user: User, table: Table): Promise<Field[]> {
|
|
const response: any = await getClient(user).get(`database/fields/table/${table.id}/`)
|
|
return response.data.map((f) => {
|
|
return new Field(
|
|
f.id,
|
|
f.name,
|
|
f.type,
|
|
table,
|
|
f
|
|
)
|
|
})
|
|
}
|
|
|
|
export async function deleteAllNonPrimaryFieldsFromTable(user: User, table: Table): Promise<void> {
|
|
(await getFieldsForTable(user, table)).filter((f) => !f.primary).forEach((f) => deleteField(user, f))
|
|
}
|