diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/main.py b/src/main.py new file mode 100644 index 00000000..0befa47f --- /dev/null +++ b/src/main.py @@ -0,0 +1,200 @@ +from flask import Flask +from flask_restful import Api + +from src.resources.entities.dataset_type_endpoints import * +from src.resources.entities.applications_endpoints import * +from src.resources.entities.datacollection_datafiles_endpoints import * +from src.resources.entities.datacollection_datasets_endpoints import * +from src.resources.entities.datacollection_parameters_endpoints import * +from src.resources.entities.datacollections_endpoints import * +from src.resources.entities.datafile_formats_endpoints import * +from src.resources.entities.datafile_parameters_endpoints import * +from src.resources.entities.datafiles_endpoints import * +from src.resources.entities.datasets_endpoints import * +from src.resources.entities.facilities_endpoints import * +from src.resources.entities.facility_cycles_endpoints import * +from src.resources.entities.groupings_endpoints import * +from src.resources.entities.instrument_scientists_endpoints import * +from src.resources.entities.instruments_endpoints import * +from src.resources.entities.investigation_groups_endpoints import * +from src.resources.entities.investigation_instruments_endpoints import * +from src.resources.entities.investigation_parameters_endpoints import * +from src.resources.entities.investigation_types_endpoints import * +from src.resources.entities.investigation_users_endpoints import * +from src.resources.entities.investigations_endpoints import * +from src.resources.entities.jobs_endpoints import * +from src.resources.entities.keywords_endpoints import * +from src.resources.entities.parameter_types_endpoints import * +from src.resources.entities.permissible_string_values_endpoints import * +from src.resources.entities.public_steps_endpoints import * +from src.resources.entities.publications_endpoints import * +from src.resources.entities.related_datafiles_endpoints import * +from src.resources.entities.rules_endpoints import * +from src.resources.entities.sample_parameters_endpoints import * +from src.resources.entities.sample_types_endpoints import * +from src.resources.entities.samples_endpoints import * +from src.resources.non_entities.sessions_endpoints import * +from src.resources.entities.shifts_endpoints import * +from src.resources.entities.studies_endpoints import * +from src.resources.entities.study_investigations_endpoints import * +from src.resources.entities.user_groups_endpoints import * +from src.resources.entities.users_endpoints import * + + +app = Flask(__name__) +api = Api(app) + + +api.add_resource(Applications, "/applications") +api.add_resource(ApplicationsWithID, "/applications/") +api.add_resource(ApplicationsCount, "/applications/count") +api.add_resource(ApplicationsFindOne, "/applications/findOne") +api.add_resource(DataCollections, "/datacollections") +api.add_resource(DataCollectionsWithID, "/datacollections/") +api.add_resource(DataCollectionsCount, "/datacollections/count") +api.add_resource(DataCollectionsFindOne, "/datacollections/findOne") +api.add_resource(DataCollectionDatafiles, "/datacollectiondatafiles") +api.add_resource(DataCollectionDatafilesWithID, "/datacollectiondatafiles/") +api.add_resource(DataCollectionDatafilesCount, "/datacollectiondatafiles/count") +api.add_resource(DataCollectionDatafilesFindOne, "/datacollectiondatafiles/findOne") +api.add_resource(DataCollectionDatasets, "/datacollectiondatasets") +api.add_resource(DataCollectionDatasetsWithID, "/datacollectiondatasets/") +api.add_resource(DataCollectionDatasetsCount, "/datacollectiondatasets/count") +api.add_resource(DataCollectionDatasetsFindOne, "/datacollectiondatasets/findOne") +api.add_resource(DataCollectionParameters, "/datacollectionparameters") +api.add_resource(DataCollectionParametersWithID, "/datacollectionparameters/") +api.add_resource(DataCollectionParametersCount, "/datacollectionparameters/count") +api.add_resource(DataCollectionParametersFindOne, "/datacollectionparameters/findOne") +api.add_resource(Datafiles,"/datafiles") +api.add_resource(DatafilesWithID, "/datafiles/") +api.add_resource(DatafilesFindOne, "/datafiles/findOne") +api.add_resource(DatafilesCount, "/datafiles/count") +api.add_resource(DatafileFormats, "/datafileformats") +api.add_resource(DatafileFormatsWithID, "/datafileformats/") +api.add_resource(DatafileFormatsCount, "/datafileformats/count") +api.add_resource(DatafileFormatsFindOne, "/datafileformats/findOne") +api.add_resource(DatafileParameters, "/datafileparameters") +api.add_resource(DatafileParametersWithID, "/datafileparameters/") +api.add_resource(DatafileParametersCount, "/datafileparameters/count") +api.add_resource(DatafileParametersFindOne, "/datafileparameters/findOne") +api.add_resource(Datasets, "/datasets") +api.add_resource(DatasetsWithID, "/datasets/") +api.add_resource(DatasetsCount, "/datasets/count") +api.add_resource(DatasetsFindOne, "/datasets/findOne") +api.add_resource(DatasetTypes, "/datasettypes") +api.add_resource(DatasetTypesWithID, "/datasettypes/") +api.add_resource(DatasetTypesCount, "/datasettypes/count") +api.add_resource(DatasetTypesFindOne, "/datasettypes/findOne") +api.add_resource(Facilities, "/facilities") +api.add_resource(FacilitiesWithID, "/facilities/") +api.add_resource(FacilitiesCount, "/facilities/count") +api.add_resource(FacilitiesFindOne, "/facilities/findOne") +api.add_resource(FacilityCycles, "/facilitycycles") +api.add_resource(FacilityCyclesWithID, "/facilitycycles/") +api.add_resource(FacilityCyclesCount, "/facilitycycles/count") +api.add_resource(FacilityCyclesFindOne, "/facilitycycles/findOne") +api.add_resource(Groupings, "/groupings") +api.add_resource(GroupingsWithID, "/groupings/") +api.add_resource(GroupingsCount, "/groupings/count") +api.add_resource(GroupingsFindOne, "/groupings/findOne") +api.add_resource(Instruments, "/instruments") +api.add_resource(InstrumentsWithID, "/instruments/") +api.add_resource(InstrumentsCount, "/instruments/count") +api.add_resource(InstrumentsFindOne, "/instruments/findOne") +api.add_resource(InstrumentScientists, "/instrumentscientists") +api.add_resource(InstrumentScientistsWithID, "/instrumentscientists/") +api.add_resource(InstrumentScientistsCount, "/instrumentscientists/count") +api.add_resource(InstrumentScientistsFindOne, "/instrumentscientists/findOne") +api.add_resource(Investigations, "/investigations") +api.add_resource(InvestigationsWithID, "/investigations/") +api.add_resource(InvestigationsCount, "/investigations/count") +api.add_resource(InvestigationsFindOne, "/investigations/findOne") +api.add_resource(InvestigationGroups, "/investigationgroups") +api.add_resource(InvestigationGroupsWithID, "/investigationgroups/") +api.add_resource(InvestigationGroupsCount, "/investigationgroups/count") +api.add_resource(InvestigationGroupsFindOne, "/investigationgroups/findOne") +api.add_resource(InvestigationInstruments, "/investigationinstruments") +api.add_resource(InvestigationInstrumentsWithID, "/investigationinstruments/") +api.add_resource(InvestigationInstrumentsCount, "/investigationinstruments/count") +api.add_resource(InvestigationInstrumentsFindOne, "/investigationinstruments/findOne") +api.add_resource(InvestigationParameters, "/investigationparameters") +api.add_resource(InvestigationParametersWithID, "/investigationparameters/") +api.add_resource(InvestigationParametersCount, "/investigationparameters/count") +api.add_resource(InvestigationParametersFindOne, "/investigationparameters/findOne") +api.add_resource(InvestigationTypes, "/investigationtypes") +api.add_resource(InvestigationTypesWithID, "/investigationtypes/") +api.add_resource(InvestigationTypesCount, "/investigationtypes/count") +api.add_resource(InvestigationTypesFindOne, "/investigationtypes/findOne") +api.add_resource(InvestigationUsers, "/investigationusers") +api.add_resource(InvestigationUsersWithID, "/investigationusers/") +api.add_resource(InvestigationUsersCount, "/investigationusers/count") +api.add_resource(InvestigationUsersFindOne, "/investigationusers/findOne") +api.add_resource(Jobs, "/jobs") +api.add_resource(JobsWithID, "/jobs/") +api.add_resource(JobsCount, "/jobs/count") +api.add_resource(JobsFindOne, "/jobs/findOne") +api.add_resource(Keywords, "/keywords") +api.add_resource(KeywordsWithID, "/keywords/") +api.add_resource(KeywordsCount, "/keywords/count") +api.add_resource(KeywordsFindOne, "/keywords/findOne") +api.add_resource(ParameterTypes, "/parametertypes") +api.add_resource(ParameterTypesWithID, "/parametertypes/") +api.add_resource(ParameterTypesCount, "/parametertypes/count") +api.add_resource(ParameterTypesFindOne, "/parametertypes/findOne") +api.add_resource(PermissibleStringValues, "/permissiblestringvalues") +api.add_resource(PermissibleStringValuesWithID, "/permissiblestringvalues/") +api.add_resource(PermissibleStringValuesCount, "/permissiblestringvalues/count") +api.add_resource(PermissibleStringValuesFindOne, "/permissiblestringvalues/findOne") +api.add_resource(Publications, "/publications") +api.add_resource(PublicationsWithID, "/publications/") +api.add_resource(PublicationsCount, "/publications/count") +api.add_resource(PublicationsFindOne, "/publications/findOne") +api.add_resource(PublicSteps, "/publicsteps") +api.add_resource(PublicStepsWithID, "/publicsteps/") +api.add_resource(PublicStepsCount, "/publicsteps/count") +api.add_resource(PublicStepsFindOne, "/publicsteps/findOne") +api.add_resource(RelatedDatafiles, "/relateddatafiles") +api.add_resource(RelatedDatafilesWithID, "/relateddatafiles/") +api.add_resource(RelatedDatafilesCount, "/relateddatafiles/count") +api.add_resource(RelatedDatafilesFindOne, "/relateddatafiles/findOne") +api.add_resource(Rules, "/rules") +api.add_resource(RulesWithID, "/rules/") +api.add_resource(RulesCount, "/rules/count") +api.add_resource(RulesFindOne, "/rules/findOne") +api.add_resource(Samples, "/samples") +api.add_resource(SamplesWithID, "/samples/") +api.add_resource(SamplesCount, "/samples/count") +api.add_resource(SamplesFindOne, "/samples/findOne") +api.add_resource(SampleParameters, "/sampleparameters") +api.add_resource(SampleParametersWithID, "/sampleparameters/") +api.add_resource(SampleParametersCount, "/sampleparameters/count") +api.add_resource(SampleParametersFindOne, "/sampleparameters/findOne") +api.add_resource(SampleTypes, "/sampletypes") +api.add_resource(SampleTypesWithID, "/sampletypes/") +api.add_resource(SampleTypesCount, "/sampletypes/count") +api.add_resource(SampleTypesFindOne, "/sampletypes/findOne") +api.add_resource(Sessions, "/sessions") +api.add_resource(Shifts, "/shifts") +api.add_resource(ShiftsWithID, "/shifts/") +api.add_resource(ShiftsCount, "/shifts/count") +api.add_resource(ShiftsFindOne, "/shifts/findOne") +api.add_resource(Studies, "/studies") +api.add_resource(StudiesWithID, "/studies/") +api.add_resource(StudiesCount, "/studies/count") +api.add_resource(StudiesFindOne, "/studies/findOne") +api.add_resource(StudyInvestigations, "/studyinvestigations") +api.add_resource(StudyInvestigationsWithID, "/studyinvestigations/") +api.add_resource(StudyInvestigationsCount, "/studyinvestigations/count") +api.add_resource(StudyInvestigationsFindOne, "/studyinvestigations/findOne") +api.add_resource(Users, "/users") +api.add_resource(UsersWithID, "/users/") +api.add_resource(UsersCount, "/users/count") +api.add_resource(UsersFindOne, "/users/findOne") +api.add_resource(UserGroups, "/usergroups") +api.add_resource(UserGroupsWithID, "/usergroups/") +api.add_resource(UserGroupsCount, "/usergroups/count") +api.add_resource(UserGroupsFindOne, "/usergroups/findOne") + + +if __name__ == "__main__": + app.run(debug=True) \ No newline at end of file diff --git a/src/resources/__init__.py b/src/resources/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/resources/entities/__init__.py b/src/resources/entities/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/resources/entities/applications_endpoints.py b/src/resources/entities/applications_endpoints.py new file mode 100644 index 00000000..39dd9d1f --- /dev/null +++ b/src/resources/entities/applications_endpoints.py @@ -0,0 +1,60 @@ +from common.models.db_models import APPLICATION +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string + + +class Applications(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(APPLICATION, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(APPLICATION, request.json) + return get_row_by_id(APPLICATION, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class ApplicationsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(APPLICATION, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(APPLICATION, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(APPLICATION, id, str(request.json)) + return get_row_by_id(APPLICATION, id).to_dict(), 200 + + +class ApplicationsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(APPLICATION, filters), 200 + + +class ApplicationsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(APPLICATION, filters), 200 diff --git a/src/resources/entities/datacollection_datafiles_endpoints.py b/src/resources/entities/datacollection_datafiles_endpoints.py new file mode 100644 index 00000000..495a721f --- /dev/null +++ b/src/resources/entities/datacollection_datafiles_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATACOLLECTIONDATAFILE + + +class DataCollectionDatafiles(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATACOLLECTIONDATAFILE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATACOLLECTIONDATAFILE, request.json) + return get_row_by_id(DATACOLLECTIONDATAFILE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DataCollectionDatafilesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATACOLLECTIONDATAFILE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATACOLLECTIONDATAFILE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATACOLLECTIONDATAFILE, id, str(request.json)) + return get_row_by_id(DATACOLLECTIONDATAFILE, id).to_dict(), 200 + + +class DataCollectionDatafilesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATACOLLECTIONDATAFILE, filters), 200 + + +class DataCollectionDatafilesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATACOLLECTIONDATAFILE, filters), 200 diff --git a/src/resources/entities/datacollection_datasets_endpoints.py b/src/resources/entities/datacollection_datasets_endpoints.py new file mode 100644 index 00000000..26477f0b --- /dev/null +++ b/src/resources/entities/datacollection_datasets_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATACOLLECTIONDATASET + + +class DataCollectionDatasets(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATACOLLECTIONDATASET, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATACOLLECTIONDATASET, request.json) + return get_row_by_id(DATACOLLECTIONDATASET, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DataCollectionDatasetsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATACOLLECTIONDATASET, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATACOLLECTIONDATASET, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATACOLLECTIONDATASET, id, str(request.json)) + return get_row_by_id(DATACOLLECTIONDATASET, id).to_dict(), 200 + + +class DataCollectionDatasetsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATACOLLECTIONDATASET, filters), 200 + + +class DataCollectionDatasetsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATACOLLECTIONDATASET, filters), 200 diff --git a/src/resources/entities/datacollection_parameters_endpoints.py b/src/resources/entities/datacollection_parameters_endpoints.py new file mode 100644 index 00000000..6ebff21f --- /dev/null +++ b/src/resources/entities/datacollection_parameters_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATACOLLECTIONPARAMETER + + +class DataCollectionParameters(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATACOLLECTIONPARAMETER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATACOLLECTIONPARAMETER, request.json) + return get_row_by_id(DATACOLLECTIONPARAMETER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DataCollectionParametersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATACOLLECTIONPARAMETER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATACOLLECTIONPARAMETER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATACOLLECTIONPARAMETER, id, str(request.json)) + return get_row_by_id(DATACOLLECTIONPARAMETER, id).to_dict(), 200 + + +class DataCollectionParametersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATACOLLECTIONPARAMETER, filters), 200 + + +class DataCollectionParametersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATACOLLECTIONPARAMETER, filters), 200 diff --git a/src/resources/entities/datacollections_endpoints.py b/src/resources/entities/datacollections_endpoints.py new file mode 100644 index 00000000..e155f97a --- /dev/null +++ b/src/resources/entities/datacollections_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATACOLLECTION + + +class DataCollections(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATACOLLECTION, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATACOLLECTION, request.json) + return get_row_by_id(DATACOLLECTION, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DataCollectionsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATACOLLECTION, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATACOLLECTION, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATACOLLECTION, id, str(request.json)) + return get_row_by_id(DATACOLLECTION, id).to_dict(), 200 + + +class DataCollectionsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATACOLLECTION, filters), 200 + + +class DataCollectionsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATACOLLECTION, filters), 200 diff --git a/src/resources/entities/datafile_formats_endpoints.py b/src/resources/entities/datafile_formats_endpoints.py new file mode 100644 index 00000000..84f97585 --- /dev/null +++ b/src/resources/entities/datafile_formats_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATAFILEFORMAT + + +class DatafileFormats(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATAFILEFORMAT, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATAFILEFORMAT, request.json) + return get_row_by_id(DATAFILEFORMAT, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DatafileFormatsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATAFILEFORMAT, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATAFILEFORMAT, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATAFILEFORMAT, id, str(request.json)) + return get_row_by_id(DATAFILEFORMAT, id).to_dict(), 200 + + +class DatafileFormatsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATAFILEFORMAT, filters), 200 + + +class DatafileFormatsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATAFILEFORMAT, filters), 200 diff --git a/src/resources/entities/datafile_parameters_endpoints.py b/src/resources/entities/datafile_parameters_endpoints.py new file mode 100644 index 00000000..77734257 --- /dev/null +++ b/src/resources/entities/datafile_parameters_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATAFILEPARAMETER + + +class DatafileParameters(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATAFILEPARAMETER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATAFILEPARAMETER, request.json) + return get_row_by_id(DATAFILEPARAMETER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DatafileParametersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATAFILEPARAMETER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATAFILEPARAMETER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATAFILEPARAMETER, id, str(request.json)) + return get_row_by_id(DATAFILEPARAMETER, id).to_dict(), 200 + + +class DatafileParametersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATAFILEPARAMETER, filters), 200 + + +class DatafileParametersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATAFILEPARAMETER, filters), 200 diff --git a/src/resources/entities/datafiles_endpoints.py b/src/resources/entities/datafiles_endpoints.py new file mode 100644 index 00000000..84f3a378 --- /dev/null +++ b/src/resources/entities/datafiles_endpoints.py @@ -0,0 +1,64 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATAFILE + + +class Datafiles(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_rows_by_filter(DATAFILE, filters), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATAFILE, request.json) + return "", 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DatafilesWithID(Resource): + + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATAFILE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATAFILE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATAFILE, id, request.json) + return get_row_by_id(DATAFILE, id).to_dict(), 200 + + +class DatafilesCount(Resource): + + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATAFILE, filters), 200 + + +class DatafilesFindOne(Resource): + + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATAFILE, filters), 200 diff --git a/src/resources/entities/dataset_type_endpoints.py b/src/resources/entities/dataset_type_endpoints.py new file mode 100644 index 00000000..b03fb341 --- /dev/null +++ b/src/resources/entities/dataset_type_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATASETTYPE + + +class DatasetTypes(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATASETTYPE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATASETTYPE, request.json) + return get_row_by_id(DATASETTYPE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DatasetTypesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATASETTYPE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATASETTYPE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATASETTYPE, id, str(request.json)) + return get_row_by_id(DATASETTYPE, id).to_dict(), 200 + + +class DatasetTypesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATASETTYPE, filters), 200 + + +class DatasetTypesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATASETTYPE, filters), 200 diff --git a/src/resources/entities/datasets_endpoints.py b/src/resources/entities/datasets_endpoints.py new file mode 100644 index 00000000..f51cdcab --- /dev/null +++ b/src/resources/entities/datasets_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import DATASET + + +class Datasets(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(DATASET, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(DATASET, request.json) + return get_row_by_id(DATASET, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class DatasetsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(DATASET, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(DATASET, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(DATASET, id, str(request.json)) + return get_row_by_id(DATASET, id).to_dict(), 200 + + +class DatasetsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(DATASET, filters), 200 + + +class DatasetsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(DATASET, filters), 200 diff --git a/src/resources/entities/facilities_endpoints.py b/src/resources/entities/facilities_endpoints.py new file mode 100644 index 00000000..66b4637b --- /dev/null +++ b/src/resources/entities/facilities_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import FACILITY + + +class Facilities(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(FACILITY, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(FACILITY, request.json) + return get_row_by_id(FACILITY, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class FacilitiesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(FACILITY, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(FACILITY, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(FACILITY, id, str(request.json)) + return get_row_by_id(FACILITY, id).to_dict(), 200 + + +class FacilitiesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(FACILITY, filters), 200 + + +class FacilitiesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(FACILITY, filters), 200 diff --git a/src/resources/entities/facility_cycles_endpoints.py b/src/resources/entities/facility_cycles_endpoints.py new file mode 100644 index 00000000..87d91692 --- /dev/null +++ b/src/resources/entities/facility_cycles_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import FACILITYCYCLE + + +class FacilityCycles(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(FACILITYCYCLE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(FACILITYCYCLE, request.json) + return get_row_by_id(FACILITYCYCLE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class FacilityCyclesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(FACILITYCYCLE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(FACILITYCYCLE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(FACILITYCYCLE, id, str(request.json)) + return get_row_by_id(FACILITYCYCLE, id).to_dict(), 200 + + +class FacilityCyclesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(FACILITYCYCLE, filters), 200 + + +class FacilityCyclesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(FACILITYCYCLE, filters), 200 diff --git a/src/resources/entities/groupings_endpoints.py b/src/resources/entities/groupings_endpoints.py new file mode 100644 index 00000000..3e975f09 --- /dev/null +++ b/src/resources/entities/groupings_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import GROUPING + + +class Groupings(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(GROUPING, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(GROUPING, request.json) + return get_row_by_id(GROUPING, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class GroupingsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(GROUPING, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(GROUPING, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(GROUPING, id, str(request.json)) + return get_row_by_id(GROUPING, id).to_dict(), 200 + + +class GroupingsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(GROUPING, filters), 200 + + +class GroupingsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(GROUPING, filters), 200 diff --git a/src/resources/entities/instrument_scientists_endpoints.py b/src/resources/entities/instrument_scientists_endpoints.py new file mode 100644 index 00000000..eeddcd57 --- /dev/null +++ b/src/resources/entities/instrument_scientists_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INSTRUMENTSCIENTIST + + +class InstrumentScientists(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INSTRUMENTSCIENTIST, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INSTRUMENTSCIENTIST, request.json) + return get_row_by_id(INSTRUMENTSCIENTIST, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InstrumentScientistsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INSTRUMENTSCIENTIST, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INSTRUMENTSCIENTIST, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INSTRUMENTSCIENTIST, id, str(request.json)) + return get_row_by_id(INSTRUMENTSCIENTIST, id).to_dict(), 200 + + +class InstrumentScientistsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INSTRUMENTSCIENTIST, filters), 200 + + +class InstrumentScientistsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INSTRUMENTSCIENTIST, filters), 200 diff --git a/src/resources/entities/instruments_endpoints.py b/src/resources/entities/instruments_endpoints.py new file mode 100644 index 00000000..3e24e394 --- /dev/null +++ b/src/resources/entities/instruments_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INSTRUMENT + + +class Instruments(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INSTRUMENT, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INSTRUMENT, request.json) + return get_row_by_id(INSTRUMENT, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InstrumentsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INSTRUMENT, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INSTRUMENT, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INSTRUMENT, id, str(request.json)) + return get_row_by_id(INSTRUMENT, id).to_dict(), 200 + + +class InstrumentsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INSTRUMENT, filters), 200 + + +class InstrumentsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INSTRUMENT, filters), 200 diff --git a/src/resources/entities/investigation_groups_endpoints.py b/src/resources/entities/investigation_groups_endpoints.py new file mode 100644 index 00000000..15a81b2a --- /dev/null +++ b/src/resources/entities/investigation_groups_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATIONGROUP + + +class InvestigationGroups(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATIONGROUP, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATIONGROUP, request.json) + return get_row_by_id(INVESTIGATIONGROUP, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationGroupsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATIONGROUP, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATIONGROUP, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATIONGROUP, id, str(request.json)) + return get_row_by_id(INVESTIGATIONGROUP, id).to_dict(), 200 + + +class InvestigationGroupsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATIONGROUP, filters), 200 + + +class InvestigationGroupsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATIONGROUP, filters), 200 diff --git a/src/resources/entities/investigation_instruments_endpoints.py b/src/resources/entities/investigation_instruments_endpoints.py new file mode 100644 index 00000000..70daca3d --- /dev/null +++ b/src/resources/entities/investigation_instruments_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATIONINSTRUMENT + + +class InvestigationInstruments(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATIONINSTRUMENT, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATIONINSTRUMENT, request.json) + return get_row_by_id(INVESTIGATIONINSTRUMENT, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationInstrumentsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATIONINSTRUMENT, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATIONINSTRUMENT, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATIONINSTRUMENT, id, str(request.json)) + return get_row_by_id(INVESTIGATIONINSTRUMENT, id).to_dict(), 200 + + +class InvestigationInstrumentsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATIONINSTRUMENT, filters), 200 + + +class InvestigationInstrumentsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATIONINSTRUMENT, filters), 200 diff --git a/src/resources/entities/investigation_parameters_endpoints.py b/src/resources/entities/investigation_parameters_endpoints.py new file mode 100644 index 00000000..2710f0fe --- /dev/null +++ b/src/resources/entities/investigation_parameters_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATIONPARAMETER + + +class InvestigationParameters(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATIONPARAMETER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATIONPARAMETER, request.json) + return get_row_by_id(INVESTIGATIONPARAMETER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationParametersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATIONPARAMETER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATIONPARAMETER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATIONPARAMETER, id, str(request.json)) + return get_row_by_id(INVESTIGATIONPARAMETER, id).to_dict(), 200 + + +class InvestigationParametersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATIONPARAMETER, filters), 200 + + +class InvestigationParametersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATIONPARAMETER, filters), 200 diff --git a/src/resources/entities/investigation_types_endpoints.py b/src/resources/entities/investigation_types_endpoints.py new file mode 100644 index 00000000..9b80717f --- /dev/null +++ b/src/resources/entities/investigation_types_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATIONTYPE + + +class InvestigationTypes(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATIONTYPE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATIONTYPE, request.json) + return get_row_by_id(INVESTIGATIONTYPE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationTypesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATIONTYPE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATIONTYPE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATIONTYPE, id, str(request.json)) + return get_row_by_id(INVESTIGATIONTYPE, id).to_dict(), 200 + + +class InvestigationTypesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATIONTYPE, filters), 200 + + +class InvestigationTypesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATIONTYPE, filters), 200 diff --git a/src/resources/entities/investigation_users_endpoints.py b/src/resources/entities/investigation_users_endpoints.py new file mode 100644 index 00000000..c0f49023 --- /dev/null +++ b/src/resources/entities/investigation_users_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATIONUSER + + +class InvestigationUsers(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATIONUSER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATIONUSER, request.json) + return get_row_by_id(INVESTIGATIONUSER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationUsersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATIONUSER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATIONUSER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATIONUSER, id, str(request.json)) + return get_row_by_id(INVESTIGATIONUSER, id).to_dict(), 200 + + +class InvestigationUsersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATIONUSER, filters), 200 + + +class InvestigationUsersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATIONUSER, filters), 200 diff --git a/src/resources/entities/investigations_endpoints.py b/src/resources/entities/investigations_endpoints.py new file mode 100644 index 00000000..1f393d67 --- /dev/null +++ b/src/resources/entities/investigations_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import INVESTIGATION + + +class Investigations(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(INVESTIGATION, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(INVESTIGATION, request.json) + return get_row_by_id(INVESTIGATION, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class InvestigationsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(INVESTIGATION, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(INVESTIGATION, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(INVESTIGATION, id, str(request.json)) + return get_row_by_id(INVESTIGATION, id).to_dict(), 200 + + +class InvestigationsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(INVESTIGATION, filters), 200 + + +class InvestigationsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(INVESTIGATION, filters), 200 diff --git a/src/resources/entities/jobs_endpoints.py b/src/resources/entities/jobs_endpoints.py new file mode 100644 index 00000000..116c367e --- /dev/null +++ b/src/resources/entities/jobs_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import JOB + + +class Jobs(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(JOB, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(JOB, request.json) + return get_row_by_id(JOB, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class JobsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(JOB, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(JOB, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(JOB, id, str(request.json)) + return get_row_by_id(JOB, id).to_dict(), 200 + + +class JobsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(JOB, filters), 200 + + +class JobsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(JOB, filters), 200 diff --git a/src/resources/entities/keywords_endpoints.py b/src/resources/entities/keywords_endpoints.py new file mode 100644 index 00000000..3765282e --- /dev/null +++ b/src/resources/entities/keywords_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import KEYWORD + + +class Keywords(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(KEYWORD, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(KEYWORD, request.json) + return get_row_by_id(KEYWORD, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class KeywordsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(KEYWORD, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(KEYWORD, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(KEYWORD, id, str(request.json)) + return get_row_by_id(KEYWORD, id).to_dict(), 200 + + +class KeywordsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(KEYWORD, filters), 200 + + +class KeywordsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(KEYWORD, filters), 200 diff --git a/src/resources/entities/parameter_types_endpoints.py b/src/resources/entities/parameter_types_endpoints.py new file mode 100644 index 00000000..8562931d --- /dev/null +++ b/src/resources/entities/parameter_types_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import PARAMETERTYPE + + +class ParameterTypes(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(PARAMETERTYPE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(PARAMETERTYPE, request.json) + return get_row_by_id(PARAMETERTYPE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class ParameterTypesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(PARAMETERTYPE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(PARAMETERTYPE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(PARAMETERTYPE, id, str(request.json)) + return get_row_by_id(PARAMETERTYPE, id).to_dict(), 200 + + +class ParameterTypesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(PARAMETERTYPE, filters), 200 + + +class ParameterTypesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(PARAMETERTYPE, filters), 200 diff --git a/src/resources/entities/permissible_string_values_endpoints.py b/src/resources/entities/permissible_string_values_endpoints.py new file mode 100644 index 00000000..342511d8 --- /dev/null +++ b/src/resources/entities/permissible_string_values_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import PERMISSIBLESTRINGVALUE + + +class PermissibleStringValues(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(PERMISSIBLESTRINGVALUE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(PERMISSIBLESTRINGVALUE, request.json) + return get_row_by_id(PERMISSIBLESTRINGVALUE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class PermissibleStringValuesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(PERMISSIBLESTRINGVALUE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(PERMISSIBLESTRINGVALUE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(PERMISSIBLESTRINGVALUE, id, str(request.json)) + return get_row_by_id(PERMISSIBLESTRINGVALUE, id).to_dict(), 200 + + +class PermissibleStringValuesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(PERMISSIBLESTRINGVALUE, filters), 200 + + +class PermissibleStringValuesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(PERMISSIBLESTRINGVALUE, filters), 200 diff --git a/src/resources/entities/public_steps_endpoints.py b/src/resources/entities/public_steps_endpoints.py new file mode 100644 index 00000000..f67909ac --- /dev/null +++ b/src/resources/entities/public_steps_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import PUBLICSTEP + + +class PublicSteps(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(PUBLICSTEP, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(PUBLICSTEP, request.json) + return get_row_by_id(PUBLICSTEP, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class PublicStepsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(PUBLICSTEP, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(PUBLICSTEP, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(PUBLICSTEP, id, str(request.json)) + return get_row_by_id(PUBLICSTEP, id).to_dict(), 200 + + +class PublicStepsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(PUBLICSTEP, filters), 200 + + +class PublicStepsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(PUBLICSTEP, filters), 200 diff --git a/src/resources/entities/publications_endpoints.py b/src/resources/entities/publications_endpoints.py new file mode 100644 index 00000000..879ec890 --- /dev/null +++ b/src/resources/entities/publications_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import PUBLICATION + + +class Publications(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(PUBLICATION, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(PUBLICATION, request.json) + return get_row_by_id(PUBLICATION, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class PublicationsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(PUBLICATION, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(PUBLICATION, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(PUBLICATION, id, str(request.json)) + return get_row_by_id(PUBLICATION, id).to_dict(), 200 + + +class PublicationsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(PUBLICATION, filters), 200 + + +class PublicationsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(PUBLICATION, filters), 200 diff --git a/src/resources/entities/related_datafiles_endpoints.py b/src/resources/entities/related_datafiles_endpoints.py new file mode 100644 index 00000000..89a7c103 --- /dev/null +++ b/src/resources/entities/related_datafiles_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import RELATEDDATAFILE + + +class RelatedDatafiles(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(RELATEDDATAFILE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(RELATEDDATAFILE, request.json) + return get_row_by_id(RELATEDDATAFILE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class RelatedDatafilesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(RELATEDDATAFILE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(RELATEDDATAFILE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(RELATEDDATAFILE, id, str(request.json)) + return get_row_by_id(RELATEDDATAFILE, id).to_dict(), 200 + + +class RelatedDatafilesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(RELATEDDATAFILE, filters), 200 + + +class RelatedDatafilesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(RELATEDDATAFILE, filters), 200 diff --git a/src/resources/entities/rules_endpoints.py b/src/resources/entities/rules_endpoints.py new file mode 100644 index 00000000..7617ebf8 --- /dev/null +++ b/src/resources/entities/rules_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import RULE + + +class Rules(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(RULE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(RULE, request.json) + return get_row_by_id(RULE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class RulesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(RULE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(RULE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(RULE, id, str(request.json)) + return get_row_by_id(RULE, id).to_dict(), 200 + + +class RulesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(RULE, filters), 200 + + +class RulesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(RULE, filters), 200 diff --git a/src/resources/entities/sample_parameters_endpoints.py b/src/resources/entities/sample_parameters_endpoints.py new file mode 100644 index 00000000..3005f81a --- /dev/null +++ b/src/resources/entities/sample_parameters_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import SAMPLEPARAMETER + + +class SampleParameters(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(SAMPLEPARAMETER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(SAMPLEPARAMETER, request.json) + return get_row_by_id(SAMPLEPARAMETER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class SampleParametersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(SAMPLEPARAMETER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(SAMPLEPARAMETER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(SAMPLEPARAMETER, id, str(request.json)) + return get_row_by_id(SAMPLEPARAMETER, id).to_dict(), 200 + + +class SampleParametersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(SAMPLEPARAMETER, filters), 200 + + +class SampleParametersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(SAMPLEPARAMETER, filters), 200 diff --git a/src/resources/entities/sample_types_endpoints.py b/src/resources/entities/sample_types_endpoints.py new file mode 100644 index 00000000..aaacf5bf --- /dev/null +++ b/src/resources/entities/sample_types_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import SAMPLETYPE + + +class SampleTypes(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(SAMPLETYPE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(SAMPLETYPE, request.json) + return get_row_by_id(SAMPLETYPE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class SampleTypesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(SAMPLETYPE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(SAMPLETYPE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(SAMPLETYPE, id, str(request.json)) + return get_row_by_id(SAMPLETYPE, id).to_dict(), 200 + + +class SampleTypesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(SAMPLETYPE, filters), 200 + + +class SampleTypesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(SAMPLETYPE, filters), 200 diff --git a/src/resources/entities/samples_endpoints.py b/src/resources/entities/samples_endpoints.py new file mode 100644 index 00000000..b62eeb64 --- /dev/null +++ b/src/resources/entities/samples_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import SAMPLE + + +class Samples(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(SAMPLE, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(SAMPLE, request.json) + return get_row_by_id(SAMPLE, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class SamplesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(SAMPLE, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(SAMPLE, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(SAMPLE, id, str(request.json)) + return get_row_by_id(SAMPLE, id).to_dict(), 200 + + +class SamplesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(SAMPLE, filters), 200 + + +class SamplesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(SAMPLE, filters), 200 diff --git a/src/resources/entities/shifts_endpoints.py b/src/resources/entities/shifts_endpoints.py new file mode 100644 index 00000000..24654fd0 --- /dev/null +++ b/src/resources/entities/shifts_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import SHIFT + + +class Shifts(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(SHIFT, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(SHIFT, request.json) + return get_row_by_id(SHIFT, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class ShiftsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(SHIFT, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(SHIFT, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(SHIFT, id, str(request.json)) + return get_row_by_id(SHIFT, id).to_dict(), 200 + + +class ShiftsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(SHIFT, filters), 200 + + +class ShiftsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(SHIFT, filters), 200 diff --git a/src/resources/entities/studies_endpoints.py b/src/resources/entities/studies_endpoints.py new file mode 100644 index 00000000..9227a67a --- /dev/null +++ b/src/resources/entities/studies_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import STUDY + + +class Studies(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(STUDY, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(STUDY, request.json) + return get_row_by_id(STUDY, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class StudiesWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(STUDY, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(STUDY, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(STUDY, id, str(request.json)) + return get_row_by_id(STUDY, id).to_dict(), 200 + + +class StudiesCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(STUDY, filters), 200 + + +class StudiesFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(STUDY, filters), 200 diff --git a/src/resources/entities/study_investigations_endpoints.py b/src/resources/entities/study_investigations_endpoints.py new file mode 100644 index 00000000..af76d7e8 --- /dev/null +++ b/src/resources/entities/study_investigations_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import STUDYINVESTIGATION + + +class StudyInvestigations(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(STUDYINVESTIGATION, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(STUDYINVESTIGATION, request.json) + return get_row_by_id(STUDYINVESTIGATION, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class StudyInvestigationsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(STUDYINVESTIGATION, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(STUDYINVESTIGATION, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(STUDYINVESTIGATION, id, str(request.json)) + return get_row_by_id(STUDYINVESTIGATION, id).to_dict(), 200 + + +class StudyInvestigationsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(STUDYINVESTIGATION, filters), 200 + + +class StudyInvestigationsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(STUDYINVESTIGATION, filters), 200 diff --git a/src/resources/entities/user_groups_endpoints.py b/src/resources/entities/user_groups_endpoints.py new file mode 100644 index 00000000..7235a2d6 --- /dev/null +++ b/src/resources/entities/user_groups_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import USERGROUP + + +class UserGroups(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(USERGROUP, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(USERGROUP, request.json) + return get_row_by_id(USERGROUP, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class UserGroupsWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(USERGROUP, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(USERGROUP, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(USERGROUP, id, str(request.json)) + return get_row_by_id(USERGROUP, id).to_dict(), 200 + + +class UserGroupsCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(USERGROUP, filters), 200 + + +class UserGroupsFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(USERGROUP, filters), 200 diff --git a/src/resources/entities/users_endpoints.py b/src/resources/entities/users_endpoints.py new file mode 100644 index 00000000..561f5dcf --- /dev/null +++ b/src/resources/entities/users_endpoints.py @@ -0,0 +1,60 @@ +from flask import request +from flask_restful import Resource + +from common.database_helpers import get_row_by_id, delete_row_by_id, update_row_from_id, get_rows_by_filter, \ + get_filtered_row_count, get_first_filtered_row, create_row_from_json +from common.helpers import requires_session_id, queries_records, get_filters_from_query_string +from common.models.db_models import USER + + +class Users(Resource): + @requires_session_id + @queries_records + def get(self): + return get_rows_by_filter(USER, request.json), 200 + + @requires_session_id + @queries_records + def post(self): + create_row_from_json(USER, request.json) + return get_row_by_id(USER, request.json["id"].to_dict()), 200 + + @requires_session_id + @queries_records + def patch(self): + pass + + +class UsersWithID(Resource): + @requires_session_id + @queries_records + def get(self, id): + return get_row_by_id(USER, id).to_dict(), 200 + + @requires_session_id + @queries_records + def delete(self, id): + delete_row_by_id(USER, id) + return "", 204 + + @requires_session_id + @queries_records + def patch(self, id): + update_row_from_id(USER, id, str(request.json)) + return get_row_by_id(USER, id).to_dict(), 200 + + +class UsersCount(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_filtered_row_count(USER, filters), 200 + + +class UsersFindOne(Resource): + @requires_session_id + @queries_records + def get(self): + filters = get_filters_from_query_string() + return get_first_filtered_row(USER, filters), 200 diff --git a/src/resources/non_entities/__init__.py b/src/resources/non_entities/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/resources/non_entities/sessions_endpoints.py b/src/resources/non_entities/sessions_endpoints.py new file mode 100644 index 00000000..7cd1aa4c --- /dev/null +++ b/src/resources/non_entities/sessions_endpoints.py @@ -0,0 +1,52 @@ +import uuid + +from flask_restful import Resource, reqparse + +from common.database_helpers import insert_row_into_table, delete_row_by_id, get_row_by_id +from common.helpers import get_session_id_from_auth_header, requires_session_id, queries_records +from common.models.db_models import SESSION + + +class Sessions(Resource): + + def post(self): + """ + Generates a sessionID if the user has correct credentials + :return: String - SessionID + """ + parser = reqparse.RequestParser() + parser.add_argument("Authorization", location="headers") + args = parser.parse_args() + if args["Authorization"] is None: + return "Unauthorized", 401 + if args["Authorization"] == "user:password": + session_id = str(uuid.uuid1()) + insert_row_into_table(SESSION(ID=session_id)) + return {"sessionID": session_id}, 201 + return "Forbidden", 403 + + @requires_session_id + @queries_records + def delete(self): + """ + Deletes a users sessionID when they logout + :return: Blank response, 200 + """ + delete_row_by_id(SESSION, get_session_id_from_auth_header()) + return "", 200 + + @requires_session_id + def get(self): + """ + Gives details of a users session + :return: String: Details of the session, 200 + """ + return get_row_by_id(SESSION, get_session_id_from_auth_header()).to_dict(), 200 + + @requires_session_id + def put(self): + """ + Refreshes a users session + :return: String: The session ID that has been refreshed, 200 + """ + return get_session_id_from_auth_header(), 200 diff --git a/src/swagger/__init__.py b/src/swagger/__init__.py new file mode 100644 index 00000000..e69de29b