Commit Graph

70 Commits

Author SHA1 Message Date
dal 94be56e042
feat: Refactor dataset listing to include user-specific permissions
- Updated the `list_datasets` function to accept an additional `id` parameter for filtering datasets based on user permissions.
- Enhanced the SQL query to join with the `dataset_permissions` table, allowing retrieval of permission details for each dataset.
- Refactored the `DatasetInfo` struct to include an `assigned` field, improving clarity in the dataset representation.
- Improved error handling for dataset retrieval, ensuring robust logging and response management.
2025-01-20 15:47:01 -07:00
dal df231a81d9
feat: Update dataset group listing to include dataset group permissions
- Modified the `list_dataset_groups` function to accept an additional `id` parameter for filtering dataset groups based on user permissions.
- Updated the SQL query to join with the `dataset_groups_permissions` table, allowing retrieval of permission counts for each dataset group.
- Refactored the `DatasetGroupInfo` struct to replace `permission_id` with `permission_count`, enhancing clarity and accuracy in the data representation.
- Ensured that the query groups by the new permission structure, improving the functionality and security of dataset group listings.
2025-01-20 15:40:50 -07:00
dal b9b5146299
feat: Add DatasetGroupPermission model and schema
- Introduced a new `DatasetGroupPermission` struct in `models.rs` to represent permissions associated with dataset groups.
- Updated the database schema in `schema.rs` to include the `dataset_groups_permissions` table, defining its structure and relationships.
- Modified the `is_user_workspace_admin_or_data_admin` function in `checks.rs` to correctly reference the user's organization role, enhancing role validation logic.
2025-01-20 15:24:34 -07:00
dal c4c7b75306
feat: Update dataset group listing to include permissions
- Enhanced the `list_dataset_groups` function to join with the `dataset_permissions` table, allowing retrieval of permission details for each dataset group.
- Modified the `DatasetGroupInfo` struct to include `permission_id` and `assigned` fields, reflecting the new data structure.
- Refactored the SQL query to group by necessary fields and ensure accurate permission data is returned, improving the functionality and security of dataset group listings.
2025-01-20 15:12:32 -07:00
dal 040bdfbab5
feat: Enhance user attribute listing with authorization checks
- Updated the `list_attributes_handler` to include authorization checks for user roles and organization IDs.
- Implemented error handling for unauthorized access to user attributes.
- Refactored the SQL query to retrieve user attributes based on the authenticated user's organization, improving security and data integrity.
- This change ensures that only authorized users can list attributes, enhancing the overall security of the API.
2025-01-20 14:47:38 -07:00
dal 3bc148927f
feat: Add assets module and nest routes in user router
- Introduced a new `assets` module to handle asset-related routes.
- Updated the user router to nest the `assets` routes under the user ID path, enhancing the organization of API endpoints.
- This change improves the structure and maintainability of the user-related routes in the API.
2025-01-20 14:41:31 -07:00
dal fdbf24e456
Refactor SQL query in list_assets_handler to use a Common Table Expression (CTE) for improved readability and maintainability. The CTE, `distinct_assets`, simplifies the selection of distinct asset records before applying the final ordering and limiting. 2025-01-20 13:01:02 -07:00
dal 3f7ed216e8
permission_group string fix 2025-01-16 10:39:55 -07:00
dal 3a0b267214
tweaked the post thread permissions handle. 2025-01-16 10:29:24 -07:00
dal d0b05608e5
Enhance dataset listing functionality with user organization roles
- Refactored dataset listing logic to incorporate user organization roles, allowing for more granular access control based on user permissions.
- Introduced new role checks for `WorkspaceAdmin`, `DataAdmin`, `Querier`, `RestrictedQuerier`, and `Viewer` to determine dataset visibility.
- Updated database queries to fetch datasets based on user roles and organization associations, improving data retrieval efficiency.
- Removed deprecated functions and streamlined the dataset fetching process, ensuring clarity and maintainability in the codebase.

These changes improve the API's security and usability by enforcing role-based access control for dataset operations.
2025-01-16 10:23:06 -07:00
dal acdb260cb4
Refactor user update route to enhance RESTful practices
- Updated the user update route to require a user ID in the URL, ensuring the correct user is updated based on the provided ID.
- Improved clarity and functionality of the `update_user` function by extracting the user ID from the path.

These changes align the user update endpoint with standard REST conventions, enhancing overall API usability.
2025-01-16 08:57:59 -07:00
dal bcf764ccd1
Implement user permission checks in dataset deployment and user update routes
- Added permission validation to the `deploy_datasets` and `post_dataset` functions to ensure only users with workspace admin or data admin roles can execute these actions.
- Enhanced error handling for permission checks, returning appropriate HTTP status codes and messages for insufficient permissions and internal errors.
- Updated imports to include the new security checks module for consistency across routes.

These changes improve security by enforcing role-based access control in critical dataset operations.
2025-01-16 08:42:02 -07:00
dal 7b110a941c
Merge pull request #38 from buster-so/nate/BUS-918-consolidate-and-cleanup-imports
Consolidate and cleanup imports
2025-01-16 07:37:14 -08:00
dal b69508d20b
Merge pull request #37 from buster-so/dallin/user-permissions
Dallin/user-permissions
2025-01-16 07:36:54 -08:00
Nate Kelley fb68215330
Merge branch 'staging' into nate/BUS-918-consolidate-and-cleanup-imports 2025-01-15 11:52:17 -07:00
dal 6aea4349a3
Update user route to use ID parameter for updates
- Changed the user update route to require a user ID in the URL, enhancing RESTful practices.
- Updated the `update_user` function to extract the user ID from the path, ensuring the correct user is updated based on the provided ID.

These changes improve the clarity and functionality of the user update endpoint, aligning it with standard REST conventions.
2025-01-15 11:17:24 -07:00
dal 24c8efdc6e
Refactor user update functionality to support role changes
- Enhanced the `update_user` endpoint to accept and process user role updates alongside name changes.
- Introduced a new `UserResponse` struct for improved response handling.
- Updated the `update_user_handler` to handle changes in both user name and organization role, improving the flexibility of user management.
- Adjusted response type to return no content upon successful updates, aligning with RESTful practices.

These changes enhance the user management capabilities by allowing for more comprehensive updates to user information.
2025-01-15 11:10:26 -07:00
dal f628b38e85
Add organizations module and integrate with user routes 2025-01-15 10:20:04 -07:00
dal d74214a910
Refactor user routes to include new endpoint for retrieving user by ID
- Removed the public modifier from `get_user` and `update_user` modules to encapsulate them within the module.
- Added a new route to the user router for fetching a user by their ID, enhancing the API's functionality.
- This change improves the user management capabilities by allowing retrieval of specific user details based on their unique identifier.
2025-01-15 10:14:15 -07:00
dal c8b9a736ee
Enhance dataset asset listing with organization-specific filtering
- Updated the `list_assets` function to include organization ID filtering in dataset permissions queries.
- Removed redundant organization ID filters from the dataset permissions queries to streamline the logic.
- Ensured that only relevant dataset assets are returned based on the user's organization, improving data security and relevance.

These changes enhance the API's ability to serve organization-specific data, aligning with recent improvements in dataset asset APIs.
2025-01-14 10:56:31 -07:00
dal 355fd336ec
Merge pull request #31 from buster-so/staging
Staging
2025-01-13 15:57:23 -08:00
dal 1f1df4a7bb
Refactor dataset deployment logic and enhance request structure
- Introduced a new `is_simple` flag in the `deploy_datasets` function to differentiate between full and simple dataset deployments.
- Updated the `deploy_datasets_handler` to accept the `is_simple` parameter, allowing for conditional processing of inserted datasets.
- Modified the `DeployDatasetsRequest` struct to include an optional `id` and `type_` field, enhancing the request's flexibility.
- Adjusted the handling of the `yml_file` field to be optional in the `DeployDatasetsRequest` struct.
- Updated the `process_batch` function to handle "USER-DEFINED" data types in addition to existing types.

These changes improve the dataset deployment process by allowing for more granular control and flexibility in handling different dataset types.
2025-01-11 15:17:01 -07:00
dal 4b64458938
Enhance dataset asset APIs to include organization filtering
- Added functionality to retrieve the user's organization ID in both `get_dataset_overview` and `list_assets` endpoints.
- Updated database queries to filter users and permissions based on the organization ID, ensuring that only relevant data is returned for the user's organization.
- Improved error handling for organization ID retrieval, logging errors appropriately.

These changes improve data security and relevance by ensuring that users only access assets associated with their organization.
2025-01-11 11:56:56 -07:00
Nate Kelley 7d253674cb
Merge branch 'staging' into big-nate/bus-891-reorganize-and-redo-permissions-tabs 2025-01-10 14:51:07 -07:00
dal b61662a43d
Enhance dataset overview API to include user email and name
- Added the user's email and name to the UserOverviewItem struct for improved clarity in user details.
- Updated the database query to select the user's name alongside their ID and email, ensuring comprehensive user information is retrieved.
- Refactored the mapping logic to accommodate the new name field, enhancing the dataset overview response.

These changes improve the dataset overview API by providing more detailed user information, facilitating better understanding of user access and roles.
2025-01-10 11:35:47 -07:00
Nate Kelley adc0e4e57e
Merge branch 'dallin/bus-889-align-cli-tooling-with-the-in-app-editor' into big-nate/bus-891-reorganize-and-redo-permissions-tabs 2025-01-10 10:33:59 -07:00
Nate Kelley c6de0e5bc8
Merge branch 'staging' into big-nate/bus-891-reorganize-and-redo-permissions-tabs 2025-01-10 10:33:49 -07:00
dal fd54b4724d
Update team role handling in migration script to include 'admin' as 'manager' and default to 'member'
- Modified the role adjustment logic in the teams_to_users table to treat 'admin' roles as 'manager'.
- Set the default role to 'member' for all other cases, improving clarity in role assignments.

These changes enhance the migration process for dataset groups and permissions management.
2025-01-09 17:35:54 -07:00
dal 1182235116
try root cert 2025-01-09 17:27:39 -07:00
dal ccd6ea8ce9
Refactor Dockerfile for optional certificate handling
- Simplified certificate handling logic by allowing the COPY command to proceed without failure if cert.pem is missing.
- Updated the Dockerfile to ensure that the update-ca-certificates command is run unconditionally after copying the certificate.
- Maintained the existing build process for the bi_api application.

These changes improve the Docker image build process by making certificate handling more robust and less dependent on the environment.
2025-01-09 17:18:52 -07:00
dal 41985c6b50
added in cert logic 2025-01-09 16:58:06 -07:00
dal e83a00c108
Add data source information to GetDataset response structure 2025-01-09 16:18:11 -07:00
dal 43abb0321e
Refactor dataset deployment logic and enforce unique constraints
- Updated the SQL migration to enforce a unique constraint on the combination of `database_name` and `data_source_id` in the datasets table, ensuring data integrity.
- Refactored the `deploy_datasets_handler` to separate datasets with and without IDs, allowing for concurrent upsert operations based on their presence.
- Enhanced the upsert logic to handle datasets more efficiently, improving performance during dataset deployment.

These changes improve the robustness and efficiency of the dataset deployment process within the API.
2025-01-09 13:05:54 -07:00
dal 761028c95c
Add SQL execution endpoint and modularize SQL handling
- Introduced a new `/sql/run` endpoint for executing SQL queries against datasets and data sources.
- Created a dedicated `sql` module and a `run_sql` handler to manage SQL execution logic.
- Implemented access checks to ensure users have the necessary permissions to execute SQL queries.
- Enhanced data retrieval and metadata processing for SQL results, improving overall API functionality.

These changes expand the API's capabilities by allowing users to run custom SQL queries, facilitating more flexible data interactions.
2025-01-09 12:05:49 -07:00
dal 79b3df107d
Add support for YAML-based dataset deployment and enhance dataset structures 2025-01-09 11:57:56 -07:00
dal d962af3883
Enhance dataset API with new post endpoint and modular structure
- Added a new `post_dataset` module and corresponding route to handle dataset creation.
- Updated the router to include the new POST endpoint for datasets, improving API functionality.
- Maintained existing routes while ensuring modular organization of dataset-related logic.

These changes improve the API's capabilities for dataset management by providing a dedicated endpoint for dataset creation, enhancing overall usability.
2025-01-09 10:02:09 -07:00
dal c2cd564251
Refactor dataset API to deploy datasets and update related structures
- Replaced the existing `post_datasets` endpoint with a new `deploy_datasets` endpoint to better reflect its purpose.
- Deleted the `post_datasets` module and its associated logic, streamlining the codebase.
- Updated the request and response structures to use `DeployDatasetsRequest` and related types, enhancing clarity and maintainability.
- Adjusted the BusterClient to utilize the new endpoint for deploying datasets, ensuring consistency across the API.

These changes improve the API's functionality by providing a clearer and more focused approach to dataset deployment, facilitating better data management.
2025-01-09 09:31:29 -07:00
dal 51e3c0cc2e
Add new endpoint for retrieving dataset data samples
- Introduced a new route to the datasets API for fetching data samples associated with a specific dataset.
- Added the `get_dataset_data_sample` module to handle the logic for retrieving dataset data samples.
- Updated the router configuration to include the new endpoint, enhancing the API's functionality for dataset management.

These changes improve the API's capabilities by allowing users to access sample data for datasets, facilitating better data exploration and analysis.
2025-01-09 09:23:46 -07:00
dal 08f6f343a8
Refactor GetDataset API response structure and improve dataset access checks
- Simplified the GetDatasetResponse struct by removing unnecessary fields and renaming existing ones for clarity.
- Updated the dataset retrieval logic to focus on essential dataset attributes, enhancing performance and readability.
- Improved user role checks for dataset access, ensuring clearer error messages for permission issues.
- Removed unused imports and streamlined the code for better maintainability.

These changes enhance the API's efficiency in retrieving dataset information and improve the clarity of user permissions related to dataset access.
2025-01-09 09:12:36 -07:00
dal 3b899452b0
Add model field to Dataset struct and update dataset routes
- Introduced a new optional `model` field in the Dataset struct to store model references.
- Updated the dataset routes to include a new endpoint for retrieving datasets by ID.
- Modified dataset creation logic to accommodate the new `model` field.
- Refactored dataset queries to utilize `datasets::all_columns` for improved readability and maintainability.

These changes enhance the dataset management capabilities by allowing the association of models with datasets, improving data organization and retrieval.
2025-01-08 22:51:32 -07:00
dal c74016d3bd
Add yml_file field to Dataset model and related API structures
- Introduced a new optional `yml_file` field in the Dataset model to store YAML file references.
- Updated the database schema to include the `yml_file` column in the datasets table.
- Modified various API request and response structures to accommodate the new `yml_file` field.
- Enhanced dataset handling functions to support the inclusion of `yml_file` in dataset operations.

These changes improve the dataset management capabilities by allowing the association of YAML files with datasets, facilitating better data organization and retrieval.
2025-01-08 22:33:14 -07:00
RakeshNara10 fba7cc9c8e add DATABASE_URL export to Makefile 2025-01-09 09:48:08 +05:30
dal f1ab3c74a5
reset 2025-01-08 17:26:08 -07:00
dal 767ffd9fbc
one more test 2025-01-08 17:25:51 -07:00
dal 565dd7ac48
reset 2025-01-08 17:24:22 -07:00
dal 9f9d896ac1
testing 2025-01-08 17:24:09 -07:00
dal 62c7f1aabb
Merge pull request #24 from buster-so/dal/apis-for-permissions
Dal/apis-for-permissions
2025-01-08 15:53:59 -08:00
dal 5e9d3c198e Enhance dataset overview API with detailed user access queries and lineage tracking
- Added queries to retrieve datasets and permission groups associated with users for improved access tracking in the dataset overview response.
- Implemented logic to include direct dataset access and permission group lineage in the user overview, enhancing clarity on user permissions.
- Improved error handling for database interactions related to dataset and permission group queries.
- Added debug print statements for datasets and permission groups queries to facilitate troubleshooting.

These changes improve the API's ability to manage and report user permissions effectively, providing a clearer overview of user access to datasets and permission groups.
2025-01-08 16:51:00 -07:00
dal c247954733 Refactor dataset overview API to enhance user permission structure and simplify response
- Updated the UserPermissionLineage and UserOverviewItem structs to provide a clearer representation of user permissions and lineage in the dataset overview response.
- Simplified the get_dataset_overview function by removing redundant queries and consolidating user access checks.
- Improved error handling for database interactions related to user permissions.
- Streamlined the overall structure of the dataset overview response to focus on user details and their access capabilities.

These changes enhance the API's clarity and efficiency in managing and reporting user permissions.
2025-01-08 16:04:05 -07:00
dal 533ef5a4ef Enhance dataset overview API with user permission lineage and error handling improvements
- Introduced UserPermissionLineage struct to provide detailed user access information in the dataset overview response.
- Updated get_dataset_overview function to include comprehensive checks for user permissions, dataset group access, and direct access.
- Improved error handling for database queries related to user permissions and access checks.
- Added TODO comments in list_dataset_assets and put_dataset_assets routes to address future dataset group integration.

These changes enhance the API's capability to manage and report on user permissions effectively.
2025-01-08 15:42:28 -07:00