Coder Social home page Coder Social logo

fsprojects / azurestoragetypeprovider Goto Github PK

View Code? Open in Web Editor NEW
84.0 18.0 34.0 1.75 MB

An F# Azure Type Provider which can be used to explore Blob, Table and Queue Azure Storage assets and easily apply CRUD operations on them.

Home Page: http://fsprojects.github.io/AzureStorageTypeProvider/

License: The Unlicense

F# 99.05% PowerShell 0.51% Shell 0.36% Batchfile 0.08%
azure azure-storage fsharp typeprovider

azurestoragetypeprovider's Introduction

Azure Storage Type Provider

An F# Azure Type Provider which can be used to explore Azure Storage assets quickly and easily.

The goal is to create a provider which allows lightweight access to your Azure storage data within the context of e.g. F# scripts or applications to allow CRUD operations quickly and easily.

Support exists reading and writing from Blobs, Tables and Queues, as well as fallback to the standard .NET Azure SDK.

The provider currently does not support .NET Core for the reasons specified here.

AppVeyor build status

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)

azurestoragetypeprovider's People

Contributors

ahmelsayed avatar ajwillshire avatar alex-bogomaz avatar andycross avatar forki avatar fsgit avatar fsprojectsgit avatar gdziadkiewicz avatar isaacabraham avatar jesseemerick avatar johnc-j avatar mexx avatar nhirschey avatar psfinaki avatar sergey-tihon avatar stewart-r avatar tforkmann avatar theprash avatar twith2sugars avatar vasily-kirichenko avatar wastaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azurestoragetypeprovider's Issues

Hide Get methods on empty tables.

We know whether a table is empty or not immediately when we try to infer schema. If the schema is empty we could (should?) hide the query methods.

Allow account details to be loaded via a file

I prefer not to commit account details in to source control but with the provider as it currently stands I have no other choice.

Would be good if I could pass a file location which contain those details.

Empty containers and files

If a container has no files in it, the container gets a red squiggly. We should instead generate a single item in the container called something like "No files in Container" or similar.

Delete a file

In addition to being able to Download a file, we should be able to Delete a file from Blob Storage.

Tidy up scaffold

Incorporate an automatic push to nuget servers with tagging and pushing to GH as well.

clean up table storage code

modules need rearranging to be more consistent with blob implementation. Also see if we can refactor the EDM -> .Net property type mapping code (overly verbose copy-n-paste)

Allow simple querying of entities

Allow users some way to form a WHERE clause which can be mapped into an Azure Table Query. Doesn't need to be an IQueryable implementation to start with.

Limit batches to 4mb in size

If you insert data more than 4mb in size in Table operations, the SDK throws an error. We should try to prevent this by batching in 4mb limits.

Download text files

Files that end in .txt should have a DownloadAsync method on it that will download the contents as a string.

Generate SAS on demand

There should be a simple method on a file to generate a Shared Access Signature for a given TimeSpan.

Blobs are not properties

Blobs are currently all just static types that happen to have the same shape. They should be (static) properties on the container that implement an interface (or interfaces) - this would allow the user to operate on multiple files with collection operations.

Statically typed access to Import/Export Service

List blobs in folder

There is only one operation on folders for blob containers to download all files in the folder.
It'd be great to be able to list blobs in a folder to iterate on it.
Like:

account.``path/``.``to/``.``folder/``
|> Seq.map (fun blob -> blob.Name)

Create a basic AzureTableEntity

This is to allow developers to write common code against common properties of all entities i.e. row key, partition key and values.

Remove reliance on Azure .NET SDK

The Azure .NET SDK is large (adding over 1mb to the nuget package) and contains lots of fluff that is not needed.
Currently the TP only uses a relatively small proportion of the SDK so should look to hand-roll a thin wrapper around the raw REST API.

Allow use of whole connection string

It would be nice if the type provider just allowed a single connection string like this, which is what Azure gives you in some instances:

type Account = AzureTypeProvider<"DefaultEndpointsProtocol=https;AccountName=nameOfStorage;AccountKey=AHIUDMNWIKCSMNSCI(*WN"NC(*E==">

(That's not my real connection string :) )

Download content as a stream

Each file in blob storage should have a method on it to download asynchronously as a stream so e.g. the file can be downloaded to the local file system.

Download content as a stream

Blobs should provide the capability to download the content as a stream. This is useful for e.g. reading the first few lines in a large file.

I can't open FSharp.Azure.StorageTypeProvider

I did the following:

  1. Create a new F# project in VS2013
  2. In Package Manager Console, execute while targetting the new project:
    Install-Package FSharp.Azure.StorageTypeProvider
  3. In the file, type "open FSharp.Azure.StorageTypeProvider"

but I get:

"The namespace or module 'FSharp' is not defined"

What am I doing wrong? I am new to Nuget, and this is the first package I've downloaded that hasn't "just work"ed.

Support data binding scenarios

There are some interfaces that we could support that would better support data binding scenarios. Have a look at the other type providers out there for how this could be accomplished.

Add support for Path property.

It would be useful on every folder to have a "Path" property - this can be used in conjunction with ListBlobs to retrieve all child blobs. Either that or have a ListBlobs function on the folder.

Storage Queue support

Provide basic support for Queues - this means navigating through queues, plus the ability to pop / push / peek at the storage queue, and perhaps a simple API on top of the queue message in order to accept / reject the message etc.

Hide generated types

Generated types are shown in intellisense to the user. They should only see the Type Provider to make it as easy to use as possible.

Error checking

Check on arguments passed etc. Currently we only do limited checking, but we should check whether the connection string is valid or not and somehow gracefully notify the caller.

Individuals for Tables

We should supply Individuals for Tables so that you can quickly get at e.g. the first 10 rows of a table or something like that. The SQL Type Provider is a good place to see how this has been done and we could try to replicate that behaviour.

Parameterise Blob commands?

It would be nice to be able to override the connection when downloading blobs etc. as can be done with table data.

Directory structures are not live

The type provider needs to automatically reload directories only hitting "." in intellisense rather than caching the results, so that if you e.g. add a new file in Blob Storage, re-entering that folder will automatically get the latest files.

Download to CSV

Allow the user to download either an entire table or a specific partition to a local CSV file.

Page Blobs are not supported

I have a blob container called fsstorage that contains the following blobs:

log
log/app000001
log/app000001/2015-01-21
log/app000001/2015-01-21/activity_1421808013040
log/app000001/2015-01-21/crash_1421808013420
...

The type provider seems to get confused with this structure. I can dot up to:

image

But the next level down I get:

image

I expect to see activity_1421808013040 | crash_1421808013420 | ... | Download in the IntelliSense. Is this a bug?

Create proper documentation

Rather than a .readme file, there should be a proper FSharp documentation github website using F# Formatting etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.