Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ export class GetTableRowsUseCase extends AbstractUseCase<GetTableRowsDs, FoundTa
searchingFieldValue,
filteringFields,
autocompleteFields,
tableStructure,
userEmail,
);
} catch (e) {
Expand Down
3 changes: 3 additions & 0 deletions rocketadmin-agent/src/command/command-executor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export class CommandExecutor {
referencedFieldName,
identityColumnName,
fieldValues,
tableStructure,
} = messageData.data;
let operationStatusResult = OperationResultStatusEnum.unknown;
switch (operationType) {
Expand Down Expand Up @@ -113,6 +114,7 @@ export class CommandExecutor {
searchedFieldValue,
filteringFields,
autocompleteFields,
tableStructure,
);
} catch (e) {
operationStatusResult = OperationResultStatusEnum.unsuccessfully;
Expand Down Expand Up @@ -225,6 +227,7 @@ export class CommandExecutor {
searchedFieldValue,
filteringFields,
autocompleteFields,
null,
);
} catch (e) {
operationStatusResult = OperationResultStatusEnum.unsuccessfully;
Expand Down
2 changes: 2 additions & 0 deletions rocketadmin-agent/src/interfaces/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { OperationTypeEnum } from '../enums/operation-type.enum.js';
import { TableSettingsDS } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/data-structures/table-settings.ds.js';
import { FilteringFieldsDS } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/data-structures/filtering-fields.ds.js';
import { AutocompleteFieldsDS } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/data-structures/autocomplete-fields.ds.js';
import { TableStructureDS } from '@rocketadmin/shared-code/src/data-access-layer/shared/data-structures/table-structure.ds.js';

export interface IAutocompleteFields {
fields: Array<string>;
Expand Down Expand Up @@ -79,6 +80,7 @@ export interface IMessageDataInfo {
identityColumnName: string;
referencedFieldName: string;
email: string;
tableStructure: TableStructureDS[] | null;
}

export interface IPaginationRO {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ export class DataAccessObjectAgent implements IDataAccessObjectAgent {
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
userEmail: string,
): Promise<FoundRowsDS> {
const jwtAuthToken = this.generateJWT(this.connection.token);
Expand All @@ -256,6 +257,7 @@ export class DataAccessObjectAgent implements IDataAccessObjectAgent {
filteringFields,
autocompleteFields,
email: userEmail,
tableStructure,
});

if (commandResult instanceof Error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ export class DataAccessObjectCassandra extends BasicDataAccessObject implements
searchedFieldValue: string,
filteringFields: Array<FilteringFieldsDS>,
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
page = page > 0 ? page : DAO_CONSTANTS.DEFAULT_PAGINATION.page;
perPage =
Expand All @@ -189,7 +190,9 @@ export class DataAccessObjectCassandra extends BasicDataAccessObject implements
: DAO_CONSTANTS.DEFAULT_PAGINATION.perPage;
try {
const client = await this.getCassandraClient();
const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

if (autocompleteFields?.value && autocompleteFields?.fields?.length > 0) {
Expand Down Expand Up @@ -661,6 +664,7 @@ export class DataAccessObjectCassandra extends BasicDataAccessObject implements
searchedFieldValue,
filteringFields,
null,
null,
);
const readable = new Readable({
objectMode: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ export class DataAccessObjectDynamoDB extends BasicDataAccessObject implements I
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
const { dynamoDb } = this.getDynamoDb();

Expand All @@ -240,7 +241,9 @@ export class DataAccessObjectDynamoDB extends BasicDataAccessObject implements I
? settings.list_per_page
: DAO_CONSTANTS.DEFAULT_PAGINATION.perPage;

const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

let filterExpression = '';
Expand Down Expand Up @@ -626,6 +629,7 @@ export class DataAccessObjectDynamoDB extends BasicDataAccessObject implements I
searchedFieldValue,
filteringFields,
null,
null,
);
return result.data as any;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ export class DataAccessObjectElasticsearch extends BasicDataAccessObject impleme
searchedFieldValue: string,
filteringFields: Array<FilteringFieldsDS>,
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
const client = this.getElasticClient();

Expand Down Expand Up @@ -216,7 +217,9 @@ export class DataAccessObjectElasticsearch extends BasicDataAccessObject impleme
searchQuery.size = DAO_CONSTANTS.AUTOCOMPLETE_ROW_LIMIT;
}

const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}

let { search_fields } = settings;
if ((!search_fields || search_fields.length === 0) && searchedFieldValue) {
Expand Down Expand Up @@ -563,6 +566,7 @@ export class DataAccessObjectElasticsearch extends BasicDataAccessObject impleme
searchedFieldValue,
filteringFields,
null,
null,
);
return result.data as any;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ export class DataAccessObjectIbmDb2 extends BasicDataAccessObject implements IDa
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
const connectionSchema = this.connection.schema.toUpperCase();
tableName = tableName.toUpperCase();
Expand All @@ -209,7 +210,9 @@ export class DataAccessObjectIbmDb2 extends BasicDataAccessObject implements IDa
const connectionToDb = await this.getConnectionToDatabase();

const { large_dataset, rowsCount } = await this.getRowsCount(tableName, this.connection.schema);
const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

const lastPage = Math.ceil(rowsCount / perPage);
Expand Down Expand Up @@ -592,6 +595,7 @@ WHERE
searchedFieldValue,
filteringFields,
null,
null,
)) as any;
return rowsResult.data;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ export class DataAccessObjectMongo extends BasicDataAccessObject implements IDat
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
page = page > 0 ? page : DAO_CONSTANTS.DEFAULT_PAGINATION.page;
perPage =
Expand All @@ -185,7 +186,9 @@ export class DataAccessObjectMongo extends BasicDataAccessObject implements IDat
const db = await this.getConnectionToDatabase();
const collection = db.collection(tableName);

const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

if (autocompleteFields?.value && autocompleteFields.fields?.length > 0) {
Expand Down Expand Up @@ -441,6 +444,7 @@ export class DataAccessObjectMongo extends BasicDataAccessObject implements IDat
searchedFieldValue,
filteringFields,
null,
null,
);
return result.data as any;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ export class DataAccessObjectMssql extends BasicDataAccessObject implements IDat
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
page = page > 0 ? page : DAO_CONSTANTS.DEFAULT_PAGINATION.page;
perPage =
Expand All @@ -135,10 +136,11 @@ export class DataAccessObjectMssql extends BasicDataAccessObject implements IDat
: DAO_CONSTANTS.DEFAULT_PAGINATION.perPage;

const knex = await this.configureKnex();
const [tableStructure, tableSchema] = await Promise.all([
this.getTableStructure(receivedTableName),
this.getSchemaName(receivedTableName),
]);

if (!tableStructure) {
tableStructure = await this.getTableStructure(receivedTableName);
}
const tableSchema = await this.getSchemaName(receivedTableName);

const availableFields = this.findAvailableFields(tableSettings, tableStructure);
const tableNameWithoutSchema = receivedTableName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ export class DataAccessObjectMysql extends BasicDataAccessObject implements IDat
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
page = page > 0 ? page : DAO_CONSTANTS.DEFAULT_PAGINATION.page;
perPage =
Expand All @@ -185,7 +186,9 @@ export class DataAccessObjectMysql extends BasicDataAccessObject implements IDat
: DAO_CONSTANTS.DEFAULT_PAGINATION.perPage;

const knex = await this.configureKnex();
const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

if (autocompleteFields?.value && autocompleteFields?.fields?.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ export class DataAccessObjectOracle extends BasicDataAccessObject implements IDa
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
const knex = await this.configureKnex();

Expand Down Expand Up @@ -229,7 +230,9 @@ export class DataAccessObjectOracle extends BasicDataAccessObject implements IDa
? settings.list_per_page
: DAO_CONSTANTS.DEFAULT_PAGINATION.perPage;

const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);
const timestampColumnNames = tableStructure
.filter(({ data_type }) => isOracleTimeType(data_type))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ export class DataAccessObjectPostgres extends BasicDataAccessObject implements I
searchedFieldValue: string,
filteringFields: FilteringFieldsDS[],
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
page = page > 0 ? page : DAO_CONSTANTS.DEFAULT_PAGINATION.page;
perPage =
Expand All @@ -155,7 +156,9 @@ export class DataAccessObjectPostgres extends BasicDataAccessObject implements I

const knex = await this.configureKnex();
const tableSchema = this.connection.schema ?? 'public';
const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}
const availableFields = this.findAvailableFields(settings, tableStructure);

if (autocompleteFields?.value && autocompleteFields.fields?.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ export class DataAccessObjectRedis extends BasicDataAccessObject implements IDat
searchedFieldValue: string,
filteringFields: Array<FilteringFieldsDS>,
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS> {
const redisClient = await this.getClient();

Expand Down Expand Up @@ -234,7 +235,10 @@ export class DataAccessObjectRedis extends BasicDataAccessObject implements IDat
const offset = (page - 1) * perPage;
const paginatedRows = allRows.slice(offset, offset + perPage);

const tableStructure = await this.getTableStructure(tableName);
if (!tableStructure) {
tableStructure = await this.getTableStructure(tableName);
}

const availableFields = this.findAvailableFields(settings, tableStructure);

const finalRows = paginatedRows.map((row) => {
Expand Down Expand Up @@ -466,6 +470,7 @@ export class DataAccessObjectRedis extends BasicDataAccessObject implements IDat
searchedFieldValue,
filteringFields,
null,
null,
)) as any;
return rowsResult.data;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export interface IDataAccessObjectAgent {
searchedFieldValue: string,
filteringFields: Array<FilteringFieldsDS>,
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
userEmail: string,
): Promise<FoundRowsDS>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export interface IDataAccessObject {
searchedFieldValue: string,
filteringFields: Array<FilteringFieldsDS>,
autocompleteFields: AutocompleteFieldsDS,
tableStructure: TableStructureDS[] | null,
): Promise<FoundRowsDS>;

getTableForeignKeys(tableName: string): Promise<Array<ForeignKeyDS>>;
Expand Down
Loading