* chore: dump plugin * chore: rename plugin * chore: add duplicator into preset * chore: tmp commit * feat: restore & dump action * feat: collection dump & restore * feat: collection dump & restore * fix: dump with json type * fix: dump uischema * chore: tmp commit * chore: tmp commit * feat: restore custom collections * chore: code * fix: build * chore: tmp commit * fix: pm.generateClientFile * feat: dump with user plugins * feat: restore ignore collection * feat: ignore user with rolesUsers * chore: client plugins * refactor: restore insert sql * chore: code format * feat: restore with sequelize insert query * fix: restore json field * fix: json restore * refactor: dumper * refactor: restorer * chore: dump file name * chore: dump file name * chore: dump message * fix: restore with jsonb fields * feat: field data writer * chore: code * feat: collection group manager * feat: duplicator client * feat: duplicator panel * chore: disable duplicator ui * feat: dump with inquirer * chore: dumper * chore: collection group manager * feat: restore with inquirer * chore: comment * chore: inquirer page size * feat: warning before restore * feat: sync postgres sequence id after import collection * chore: restore checked * feat: dump with through table * feat: restore with through table * feat: restore with sequence field * chore: graph collection manager collection group * fix: dump with no column tables * fix: dump empty table * fix: force remove workdir * chore: disable throw error when sync empty table * feat: support map field restore * fix: restore from pg dumped file * fix: dump with logic field * chore: console.log * chore: collection group * chore: handle import collection error * fix: dump migrations table * feat: display custom collection title * fix: restore collection title display * fix: dump iframe html * fix: dump with postgres inhertitance * fix: dump sql * chore: export snapshot field * fix: import with sequences * fix: import sequences * fix: storage Co-authored-by: chenos <chenlinxh@gmail.com>
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { BaseColumnFieldOptions, Field, FieldContext } from '@nocobase/database';
|
|
import { DataTypes } from 'sequelize';
|
|
import { isMysql, isPg, isSqlite, joinComma, toValue } from '../helpers';
|
|
|
|
class LineString extends DataTypes.ABSTRACT {
|
|
key = 'Path';
|
|
}
|
|
|
|
export class LineStringField extends Field {
|
|
constructor(options?: any, context?: FieldContext) {
|
|
const { name } = options;
|
|
super(
|
|
{
|
|
get() {
|
|
const value = this.getDataValue(name);
|
|
if (isPg(context)) {
|
|
return toValue(value);
|
|
} else if (isMysql(context)) {
|
|
return value?.coordinates || null;
|
|
} else {
|
|
return value;
|
|
}
|
|
},
|
|
set(value) {
|
|
if (!value?.length) value = null;
|
|
else if (isPg(context)) {
|
|
value = joinComma(value.map(joinComma));
|
|
} else if (isMysql(context)) {
|
|
value = {
|
|
type: 'LineString',
|
|
coordinates: value,
|
|
};
|
|
}
|
|
this.setDataValue(name, value);
|
|
},
|
|
...options,
|
|
},
|
|
context,
|
|
);
|
|
}
|
|
|
|
get dataType() {
|
|
if (isPg(this.context)) {
|
|
return LineString;
|
|
}
|
|
if (isMysql(this.context)) {
|
|
return DataTypes.GEOMETRY('LINESTRING');
|
|
} else {
|
|
return DataTypes.JSON;
|
|
}
|
|
}
|
|
}
|
|
|
|
export interface LineStringOptions extends BaseColumnFieldOptions {
|
|
type: 'lineString';
|
|
}
|