[Free] Baserow - Open source no-code database

πŸ’½ Baserow Extension

An Opensouce no-code airtable alternative database

Baserow is open-source database that helps you to store data like an airtable. This extension has method to get, create, update or delete data of your baserow's database. You can upload file to the baserow server through this extension.

Blocks & Documentation :

1. SetToken

component_set_get

This block is used to set API token & must be initialized . On baserow, Go to your dashboard, Click on your profile, then setting and API token to get the token for the particular group.

2. Set TableId

component_set_get (1)

This block is used to set the table id of your particular table from which you wanted to fetch/write data. This block must be initialized.

3. Set URL

component_set_get (2)

If you are using self-hosting of base, you should set the Url to your particular Url. By default, its value is https://api.baserow.io/.

4. Get Column

component_method

This method will help you to get the particular column data. Page defines page of data which should be returned and accepts int. Size defines how many rows of data should be returned per page and accepts int.
If you are using V3.2 & above, size actually works like maxSize of Airtable. For example, I've 1000 rows in my table, then if you assign page 1 and size 400 then it will fetches 400 rows and call GotColumn event on success.

5. GetListFields

component_method (1)

This method helps you to get the information about the columns in your table. It will trigger GotListFields event.

6. Get All Rows

component_method (2)

This block will help you to get the rows of the table of particular page and particular size. Page defines page of rows which should be returned and accepts int. Size defines how many rows should be returned per page and accepts int.
After V3.2, size actually works like maxSize of Airtable. For example, I've 1000 rows in my table, then if you assign page 1 and size 400 then it will fetches 400 rows and call GotAllRows event on success.

7. Get Row

component_method (3)

GetRow method will help you to get the particular row of the table. Remember row id is not a index id. rowId accepts integer row id. If success, GotRow Event will be triggered.

8. Create Row

component_method (4)

This block will help you to create a new row in your table. columns and values accepts YailList. Remember columns length and values length should be same. If success, then it will trigger RowCreated Event.

9. Update Row

component_method (5)

This block will help you to update existing row with new values. columns & values both accepts YailList. If success, It will trigger RowUpdated Event.

10. DeleteRow

component_method (6)

This method will help you to delete particular row of your table. If deletion is success then it will trigger RowDeleted Event.

11. MoveRow

component_method (7)

This block will help you to move the existing row before another row. rowId and beforeId both accepts integer. beforeId helps to move the row related to the given rowId before the row related to the provided value. It will trigger RowMoved method.

12. Get Cell

component_method (8)

This method will help you to get a single cell from rowId and column name . If got cell is success then it will trigger GotCell method.

13. Got Column

component_event (1)

This event is trigger from GetColumn method. It will give values , counts, rowIds and response. values is YailList which provides data in all cell of particular column and response gives true JSON response in list.

14. OnFieldsListed

This event is triggered from GetListFields method. It will give you ids, names, types, if table is primary and tableId of the columns of your database. Basically, it gives information of you table's columns. The above example will give you name of columns in your database in List.

15. Got All Rows

component_event

This event is triggered from GetAllRows method. It will give you values, counts , rowIds and response. values is list of all the rows each containing list of data of that particular row. counts is total no. of rows on table & rowIds is list of row Ids that is fetched. After V4, response contains list of true JSON response.

16. Got Row

component_event (3)

This event is triggered from GetRow method. values will give you list of datas present in the particular row and response will give you true JSON response.

17. Got Cell

component_event

This event is triggered from GetCell method. value will give you the data stored in the particular cell and response will give you the true JSON response.

18. Row Created

component_event (1)

This event is triggered from CreateRow method. response will give you JSON response from baserow.

19. Row Updated

component_event (2)

This event is triggered from UpdateRow method. response will give you JSON response from baserow.

20. Row Deleted

component_event (3)

This event is triggered from DeleteRow method. response will give you JSON response from baserow.

21. Row Moved

component_event (4)

This event is triggered from RowMoved method. response will give you JSON response from baserow.


Version 3 :

22. UploadFileByUrl

component_method

This method will help you to upload file through url to baserow server. token parameter needsjwtToken which can be generated from GenerateToken block. The single token generated from this method will be valid for only 60 minutes, So you can refresh token to generate a new one from old token by RefreshToken method. You can also check validity of the token from VerifyToken method. fileUrl parameter need direct file url.

23. GenerateToken

component_method (1)

This method will help you to generate new jwtToken. It needs username & password of your baserow account as parameters. So, I'll not suggest you to use this method in public app instead you can make an admin app and send jwtToken to your public app. This block will trigger TokenGenerated event.

24. RefreshToken

component_method (2)

This method will help you to refresh a new jwtToken from your old valid jwtToken. It will trigger TokenGenerated event.

25. VerifyToken

component_method (3)

This method will help you to check token's validity whether it is still valid to use or you have to generate new token. It will trigger TokenVerified event.

26. TokenGenerated

component_event (5)

This event is triggered from GenerateToken & RefreshToken method. It provides you new jwtToken which you can use to upload file as well as response is true Json response.

27. TokenVerified

component_event (6)

This event is raised from VerifyToken method. This can be used to check if the jwtToken is valid or not. isVerified will give you boolean wether jwtToken is still valid or not.

28. FileUploadedByUrl


This event is raised from UploadFileByUrl method. It will give you size, url, mimeType, isImage, name, originalName of the file you have uploaded as well as give you true jsonResponse.


Version 4 :

29. Filter

blocks

This method help to filter table data. fieldIds , filters and values can accept both list or string which means you can provide single as well as multiple filters. After this method, you should call GetAllRows or GetColumn method to get filtered values in GotAllRows or GotColumn events respectively. Below, it is a table of different filters and example value. (Copied from Baserow Api Documentation)

Filter Example value Full example
equal string field is 'string'
not_equal string field is not 'string'
date_equal 2020-01-01 field is date '2020-01-01'
date_not_equal 2020-01-01 field is not date '2020-01-01'
date_equals_today field is today
date_equals_month field in this month
date_equals_year field in this year
date_equals_day_of_month 1 field day of month is '1'
date_before 2020-01-01 field is before date '2020-01-01'
date_after 2020-01-01 field is after date '2020-01-01'
contains contains field contains 'string'
filename_contains string field filename contains 'string'
has_file_type image | document field has file type 'image | document'
contains_not string field contains not 'string'
length_is_lower_than 5 field length is lower than '5'
higher_than 100 field higher than '100'
lower_than 100 field lower than '100'
single_select_equal 1 field is '1'
single_select_not_equal 1 field is not '1'
boolean true field is 'true'
link_row_has 1 field has '1'
link_row_has_not 1 field has not '1'
multiple_select_has 1 field has '1'
multiple_select_has_not 1 field has not '1'
empty field is empty
not_empty field is not empty

30. FilterType

FilterType can either be OR or AND . FilterType can be used when you are using multiple filters.

  • AND : Indicates that the rows must match all the provided filters.
  • OR : Indicates that the rows only have to match one of the filters.

31. Search

blocks (1)

This method helps to search particular text from table. After this method, you should call GetAllRows or GetColumn method to get searched values in GotAllRows or GotColumn events respectively.

31. OrderAscendingTo

This block helps to get data in ascending order of a particular column. After this method, you should call GetAllRows or GetColumn method to get ordered values in GotAllRows or GotColumn events respectively.

32. OrderDescendingTo

This block helps to get data in descending order of a particular column. After this method, you should call GetAllRows or GetColumn method to get ordered values in GotAllRows or GotColumn events respectively.

33. AutoReset

blocks (4)

This block accepts boolean, and true as default. When true, if you have used some filter in GetAllRows or GetColumn of Baserow1 component then again you are using these method for second time, then it will clear the filter and you again have to add a filter for next GetAllRows or GetColumn method.


Downloads :

See All Released Version From Here

Download Latest Version :
com.oseamiya.baserow

This extension is open-source here :

Donate :

15 Likes

Nice extension

Note that although this extension is 'free,' Baserow itself is not necessarily free. If a developer uses this platform.

  1. It is not clear how long the Baserow Hosted version will remain free. Note "Free for now"
  2. The self hosted (free) option requires your own server and requires you to create a Redis database. Baserow uses Redis for asynchronous tasks and the real time collaboration. You can install Redis with the following commands. So, why not use a CloudDB with your own Redis server?

Free does not necessarily mean free of costs to use the database, just the access extension. :cry:

and a reminder:

MIT indicates Extensions have always been a "use at your own risk" affair. We as a team do not have the capacity to vet every single extension (at last count around 2% of projects include extensions and there are over 3000 unique extensions) so, use the extension at your own risk. Actually, the do not vet any of the extensions in the wild for malicious activity. Be aware even Google are aware of the risks as they prohibit apk attachments to gMail.

4 Likes

Ya, but, its free alternative to some other ones, Anyone can deploy own instace and use it freely

Nice and epic extension @oseamiya
:smiling_face_with_three_hearts:

2 Likes

Version 4.1


Overview :

In this version, I've changed the internal working of methods GetAllRows & GetColumn. In version 3, these methods used to wait for an error(internally) when fetching all available data of the table. Now, it doesn't wait for any error. It will calculate counts and is able to fetch size of data user needs, which make it one response faster than of V3.

Six new methods are added in this version for getting filtered, ordered, and/or searched data.

Blocks :

1. Filter

blocks

This method help to filter table data. fieldIds , filters and values can accept both list or string which means you can provide single as well as multiple filters. After this method, you should call GetAllRows or GetColumn method to get filtered values in GotAllRows or GotColumn events respectively. Below, it is a table of different filters and example value. (Copied from Baserow Api Documentation)

Filter Example value Full example
equal string field is 'string'
not_equal string field is not 'string'
date_equal 2020-01-01 field is date '2020-01-01'
date_not_equal 2020-01-01 field is not date '2020-01-01'
date_equals_today field is today
date_equals_month field in this month
date_equals_year field in this year
date_equals_day_of_month 1 field day of month is '1'
date_before 2020-01-01 field is before date '2020-01-01'
date_after 2020-01-01 field is after date '2020-01-01'
contains contains field contains 'string'
filename_contains string field filename contains 'string'
has_file_type image | document field has file type 'image | document'
contains_not string field contains not 'string'
length_is_lower_than 5 field length is lower than '5'
higher_than 100 field higher than '100'
lower_than 100 field lower than '100'
single_select_equal 1 field is '1'
single_select_not_equal 1 field is not '1'
boolean true field is 'true'
link_row_has 1 field has '1'
link_row_has_not 1 field has not '1'
multiple_select_has 1 field has '1'
multiple_select_has_not 1 field has not '1'
empty field is empty
not_empty field is not empty

2. FilterType

FilterType can either be OR or AND . FilterType can be used when you are using multiple filters.

  • AND : Indicates that the rows must match all the provided filters.
  • OR : Indicates that the rows only have to match one of the filters.

3. Search

blocks (1)

This method helps to search particular text from table. After this method, you should call GetAllRows or GetColumn method to get searched values in GotAllRows or GotColumn events respectively.

4. OrderAscendingTo

This block helps to get data in ascending order of a particular column. After this method, you should call GetAllRows or GetColumn method to get ordered values in GotAllRows or GotColumn events respectively.

5. OrderDescendingTo

This block helps to get data in descending order of a particular column. After this method, you should call GetAllRows or GetColumn method to get ordered values in GotAllRows or GotColumn events respectively.

6. AutoReset

blocks (4)

This block accepts boolean, and true as default. When true, if you have used some filter in GetAllRows or GetColumn of Baserow1 component then again you are using these method for second time, then it will clear the filter and you again have to add a filter for next GetAllRows or GetColumn method.


Downloads:

Download Version 4.1

Download Latest Version

All Releases

3 Likes

If I filter a word that doesn't contain it I can't filter something again
even if it contains the next word the error message Index 0 out of range [0..0) appears when filtering

1 Like

Welcome
Please elaborate and provide a screenshot of your relevant blocks

Taifun

When using baserow with a filter, I get a result from a (voucher) table. Testing it with different filter settings, the right row of information is found.
Using a filter with a non-existent voucher code, it generates an error through the baserow.onerror procedure.
After the first error, when I am using a known voucher code after that, it still gives the error, like the error was not reset.
The table with the voucher (ticket)codes Baserow example database table
The procedure 'ZoekVoucher' does the filtering.

The result of searching an existent ticketcode

The result of searching the same existent ticketcode, after a wrong ticketcode was searched before this search.


Error: index out of range

Hello and thanks :wave:. I did a small test noticed that it gives an error at the very beginning, The error appeared with the following messege. please guide me.

error: ERROR_TOKEN_DOES_NOT_EXIST
detail : the provided token does not exist
error from : GetAllRows

verify token : false

@oseamiya can you please add the data changed event to this extension

It looks like the author has left this community, which makes this extension unusable because of different bugs.

for alternative extensions see

taken from the extensions directory App Inventor Extensions | Pura Vida Apps

Taifun

1 Like