Better stored procedure management
Project description
Table of Contents
About The Project
sprocketship
makes it easy to develop, manage, and deploy stored procedures in Snowflake. Using the language of your choosing, you can write the contents of your stored procedure separately from its configurations (e.g., EXECUTE AS
, RETURN TYPE
, etc.).
Built With
Getting Started
Installation
pip install sprocketship
Usage
Currently, sprocketship expects a .sprocketship.yml
file and a procedures/
directory at the same level in a directory structure.
├── dbt_models
│ ├── customers.sql
│ ├── products.sql
├── procedures
│ ├── admin
│ │ ├── create_database_writer_role.js
│ │ ├── create_database_reader_role.js
│ ├── development
│ │ ├── create_temp_database.js
└── .sprocketship.yml
The yaml path to each procedure in the sprocketship.yml
should follow that of the paths to their corresponding files in the procedures/
directory.
procedures:
development:
- name: create_temp_database
replace_if_exists: true
database: !env_var SNOWFLAKE_DATABASE
schema: !env_var SNOWFLAKE_SCHEMA
...
admin:
- name: create_database_reader
replace_if_exists: true
database: !env_var SNOWFLAKE_DATABASE
schema: !env_var SNOWFLAKE_SCHEMA
...
- name: create_database_writer
replace_if_exists: true
database: !env_var SNOWFLAKE_DATABASE
schema: !env_var SNOWFLAKE_SCHEMA
...
From here, simply run
$ sprocketship liftoff
from the project directory (or provide the directory, e.g. sprocketship liftoff my/directory/path
) and sprocketship will launch your stored procedures into the given directory.
Exhaustive Options for Stored Procedure Configuration
name: The name of the procedure
replace_if_exists: Boolean, inserts `OR REPLACE` into the create command
database: The name of the database where the procedure will be stored
schema: The name of the schema where the procedure will be stored
language: The language of the procedure definition
execute_as: caller or owner
args:
arg_name: arg_type
returns: The return type
comment: Explanation of the procedure
Support
sprocketship currently only supports Javascript-based stored procedures (Python support coming soon!). Additionally, there are a few options from the CREATE STORED PROCEDURE
function that are not yet supported:
<arg-name> <arg-type> DEFAULT <default-value>
COPY GRANTS
RETURNS <result-data-type> NOT NULL
CALLED ON NULL INPUT | { RETURNS NULL ON NULL INPUT | STRICT }
VOLATILE | IMMUTABLE
(deprecated)
License
Distributed under the MIT License. See LICENSE
for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sprocketship-0.0.13.tar.gz
.
File metadata
- Download URL: sprocketship-0.0.13.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b81f0752028956e27d62e892d783122f5454bc7120561175d3ac63f63a8aaac7 |
|
MD5 | 4751d733d3c4930dcf27b64ed2a71146 |
|
BLAKE2b-256 | 0050fd37488d416b98ea016423f7482546f9a8b73d07c32fca6cb649fe5ce1c2 |
File details
Details for the file sprocketship-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: sprocketship-0.0.13-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03bcb650d98f31db13e2fe78e923f946fb18a5c13d05d32785d52613223069e8 |
|
MD5 | 6adf73063940527e2add30e91f159859 |
|
BLAKE2b-256 | a808fe45f8d6d0dc182e0241bbd206ff0fd28eac7f81b1f7261b323a7a319a4c |