n8n Workflow
This commit is contained in:
parent
c842bd6843
commit
b1bd573905
8 changed files with 277 additions and 255 deletions
|
|
@ -1,13 +1,12 @@
|
|||
USE [Sozsoft]
|
||||
GO
|
||||
|
||||
-- v12: Fully dynamic lookup dictionary. No hard-coded field-specific lookup rules.
|
||||
CREATE OR ALTER PROCEDURE [dbo].[Sas_H_ListFormFieldsDictionaryJson]
|
||||
@DefinitionCultureName NVARCHAR(10) = N'en', -- ListForm/ListFormField kayıt kültürü. Genelde en.
|
||||
@UiCultureName NVARCHAR(10) = N'tr', -- Kullanıcıya görünen dil. Genelde tr.
|
||||
@ListFormCode NVARCHAR(64) = NULL, -- Tek form istenirse.
|
||||
@OnlyBaseDefinitions BIT = 1, -- 1 = UserId/RoleId özel kayıtları hariç.
|
||||
@ResourceName NVARCHAR(64) = NULL -- Dil kaynağı filtrelenmek istenirse.
|
||||
@DefinitionCultureName NVARCHAR(10) = N'en',
|
||||
@UiCultureName NVARCHAR(10) = N'tr',
|
||||
@ListFormCode NVARCHAR(64) = NULL,
|
||||
@OnlyBaseDefinitions BIT = 1,
|
||||
@ResourceName NVARCHAR(64) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
|
@ -26,16 +25,7 @@ BEGIN
|
|||
DescriptionValue = LT_DESC.[Value],
|
||||
L.TableName,
|
||||
SelectCommandText = NULLIF(LTRIM(RTRIM(CAST(L.SelectCommand AS NVARCHAR(MAX)))), N''),
|
||||
L.SelectCommandType,
|
||||
L.KeyFieldName,
|
||||
L.KeyFieldDbSourceType,
|
||||
L.ListFormType,
|
||||
L.PageSize,
|
||||
L.SortMode,
|
||||
L.IsTenant,
|
||||
L.IsBranch,
|
||||
L.IsOrganizationUnit,
|
||||
L.IsSubForm,
|
||||
L.UserId,
|
||||
L.RoleId
|
||||
FROM dbo.Sas_H_ListForm L
|
||||
|
|
@ -75,42 +65,24 @@ BEGIN
|
|||
OR (L.UserId IS NULL AND L.RoleId IS NULL)
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
SELECT CAST(
|
||||
(
|
||||
SELECT
|
||||
L.ListFormCode AS [formCode],
|
||||
L.ListFormCode AS [listFormCode],
|
||||
L.CultureName AS [definitionCulture],
|
||||
@UiCultureName AS [uiCulture],
|
||||
|
||||
ISNULL(CAST(L.NameValue AS NVARCHAR(MAX)), ISNULL(L.Name, N'')) AS [displayName],
|
||||
ISNULL(CAST(L.NameValue AS NVARCHAR(MAX)), ISNULL(L.Name, N'')) AS [nameValue],
|
||||
ISNULL(CAST(L.TitleValue AS NVARCHAR(MAX)), ISNULL(L.Title, N'')) AS [title],
|
||||
ISNULL(CAST(L.TitleValue AS NVARCHAR(MAX)), ISNULL(L.Title, N'')) AS [titleValue],
|
||||
ISNULL(CAST(L.DescriptionValue AS NVARCHAR(MAX)), ISNULL(L.Description, N'')) AS [description],
|
||||
ISNULL(CAST(L.DescriptionValue AS NVARCHAR(MAX)), ISNULL(L.Description, N'')) AS [descriptionValue],
|
||||
|
||||
ISNULL(L.TableName, N'') AS [sqlTableName],
|
||||
ISNULL(L.TableName, N'') AS [tableName],
|
||||
ISNULL(L.SelectCommandText, N'') AS [selectCommand],
|
||||
ISNULL(COALESCE(NULLIF(L.TableName, N''), L.SelectCommandText), N'') AS [sqlSourceName],
|
||||
CASE
|
||||
WHEN COALESCE(NULLIF(L.TableName, N''), L.SelectCommandText) IS NULL THEN N'unknown'
|
||||
WHEN UPPER(LTRIM(COALESCE(NULLIF(L.TableName, N''), L.SelectCommandText))) LIKE N'SELECT%' THEN N'selectSql'
|
||||
ELSE N'table'
|
||||
END AS [sourceKind],
|
||||
L.SelectCommandType AS [selectCommandType],
|
||||
|
||||
ISNULL(L.KeyFieldName, N'') AS [primaryKeyColumn],
|
||||
ISNULL(L.KeyFieldName, N'') AS [keyFieldName],
|
||||
L.KeyFieldDbSourceType AS [keyFieldDbSourceType],
|
||||
L.ListFormType AS [listFormType],
|
||||
L.PageSize AS [pageSize],
|
||||
L.SortMode AS [sortMode],
|
||||
CONVERT(bit, L.IsTenant) AS [isTenant],
|
||||
CONVERT(bit, L.IsBranch) AS [isBranch],
|
||||
CONVERT(bit, L.IsOrganizationUnit) AS [isOrganizationUnit],
|
||||
CONVERT(bit, L.IsSubForm) AS [isSubForm],
|
||||
|
||||
CONCAT_WS(N' ',
|
||||
L.ListFormCode,
|
||||
|
|
@ -125,97 +97,105 @@ BEGIN
|
|||
(
|
||||
(
|
||||
SELECT
|
||||
F.FieldName AS [sqlColumnName],
|
||||
F.FieldName AS [field],
|
||||
ISNULL(CAST(LT_CAP.[Value] AS NVARCHAR(MAX)), ISNULL(F.CaptionName, N'')) AS [displayName],
|
||||
ISNULL(CAST(LT_CAP.[Value] AS NVARCHAR(MAX)), ISNULL(F.CaptionName, N'')) AS [captionValue],
|
||||
ISNULL(F.CaptionName, N'') AS [captionKey],
|
||||
F.SourceDbType AS [sourceDbType],
|
||||
|
||||
SC.SqlDataType AS [sqlDataType],
|
||||
SC.SqlMaxLength AS [sqlMaxLength],
|
||||
F.ListOrderNo AS [listOrderNo],
|
||||
CONVERT(bit, ISNULL(F.Visible, 1)) AS [isVisible],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN SC.SqlDataType = N'bit' THEN 1
|
||||
WHEN F.FieldName LIKE N'Is%' THEN 1
|
||||
WHEN F.FieldName LIKE N'Has%' THEN 1
|
||||
WHEN F.FieldName IN (N'Monday', N'Tuesday', N'Wednesday', N'Thursday', N'Friday', N'Saturday', N'Sunday') THEN 1
|
||||
WHEN F.FieldName IN (N'EmailConfirmed', N'TwoFactorEnabled', N'IsVerified', N'IsDefault', N'IsPublic', N'IsEnabled', N'IsPublished', N'IsPinned', N'IsAnonymous', N'IsFixed', N'IsCustomized', N'IsEncrypted', N'IsInherited', N'ZipRequired', N'StateRequired') THEN 1
|
||||
WHEN F.FieldName IN
|
||||
(
|
||||
N'Monday', N'Tuesday', N'Wednesday', N'Thursday',
|
||||
N'Friday', N'Saturday', N'Sunday'
|
||||
) THEN 1
|
||||
WHEN F.FieldName IN
|
||||
(
|
||||
N'EmailConfirmed', N'TwoFactorEnabled', N'IsVerified',
|
||||
N'IsDefault', N'IsPublic', N'IsEnabled', N'IsPublished',
|
||||
N'IsPinned', N'IsAnonymous', N'IsFixed', N'IsCustomized',
|
||||
N'IsEncrypted', N'IsInherited', N'ZipRequired', N'StateRequired'
|
||||
) THEN 1
|
||||
ELSE 0
|
||||
END) AS [isBooleanColumn],
|
||||
F.ListOrderNo AS [listOrderNo],
|
||||
F.Width AS [width],
|
||||
F.Alignment AS [alignment],
|
||||
F.Format AS [format],
|
||||
CONVERT(bit, ISNULL(F.Visible, 1)) AS [isVisible],
|
||||
CONVERT(bit, ISNULL(F.IsActive, 1)) AS [isActive],
|
||||
CONVERT(bit, ISNULL(F.AllowSearch, 0)) AS [allowSearch],
|
||||
CONVERT(bit, ISNULL(F.AllowEditing, 1)) AS [allowEditing],
|
||||
CONVERT(bit, ISNULL(F.AllowAdding, 1)) AS [allowAdding],
|
||||
|
||||
CONVERT(bit, CASE WHEN LJ.LookupJsonText IS NOT NULL THEN 1 ELSE 0 END) AS [hasLookup],
|
||||
CONVERT(bit, CASE WHEN LJ.LookupJsonText IS NOT NULL THEN 1 ELSE 0 END) AS [isLookupColumn],
|
||||
LJ.LookupJsonText AS [lookupJsonText],
|
||||
JSON_QUERY(CASE WHEN ISJSON(LJ.LookupJsonText) = 1 THEN LJ.LookupJsonText ELSE NULL END) AS [lookupJson],
|
||||
LJ.JoinTableJsonText AS [joinTableJsonText],
|
||||
JSON_QUERY(CASE WHEN ISJSON(LJ.JoinTableJsonText) = 1 THEN LJ.JoinTableJsonText ELSE NULL END) AS [joinTableJson],
|
||||
LKE.ParsedLookupTableName AS [parsedLookupTableName],
|
||||
LK.ParsedLookupValueColumn AS [parsedLookupValueColumn],
|
||||
LK.ParsedLookupDisplayColumn AS [parsedLookupDisplayColumn],
|
||||
LJ.LookupJsonTextDecoded AS [lookupJsonText],
|
||||
|
||||
CASE WHEN ISJSON(LJ.LookupJsonText) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.listFormCode'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.formCode'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.lookupListFormCode'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.dataSource.listFormCode'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.dataSource.formCode')
|
||||
) END AS [lookupListFormCode],
|
||||
COALESCE(
|
||||
CASE WHEN ISJSON(LJ.LookupJsonText) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.tableName'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.sqlTableName'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.lookupTableName'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.dataSource.tableName'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.dataSource.sqlTableName')
|
||||
CASE WHEN ISJSON(LJ.LookupJsonTextDecoded) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.tableName'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.sqlTableName'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.lookupTableName'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.dataSource.tableName'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.dataSource.sqlTableName')
|
||||
) END,
|
||||
LKE.ParsedLookupTableName
|
||||
LKP.ParsedLookupTableName
|
||||
) AS [lookupTableName],
|
||||
COALESCE(
|
||||
CASE WHEN ISJSON(LJ.LookupJsonText) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.valueExpr'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.valueField'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.valueColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.keyField'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.keyFieldName')
|
||||
) END,
|
||||
LK.ParsedLookupValueColumn
|
||||
) AS [lookupValueColumn],
|
||||
COALESCE(
|
||||
CASE WHEN ISJSON(LJ.LookupJsonText) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.displayExpr'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.displayField'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.displayColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.textField'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.textColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.nameField'),
|
||||
JSON_VALUE(LJ.LookupJsonText, '$.nameColumn')
|
||||
) END,
|
||||
LK.ParsedLookupDisplayColumn
|
||||
) AS [lookupDisplayColumn],
|
||||
CASE
|
||||
WHEN LJ.LookupJsonText IS NOT NULL AND F.FieldName NOT LIKE N'%Id' AND COALESCE(LK.ParsedLookupValueColumn, N'') IN (N'Name', N'Code', N'Key', N'Value') THEN N'direct-string'
|
||||
WHEN LJ.LookupJsonText IS NOT NULL OR F.FieldName LIKE N'%Id' THEN N'convert-nvarchar-safe'
|
||||
END AS [lookupJoinMode],
|
||||
CASE
|
||||
WHEN LJ.LookupJsonText IS NOT NULL AND F.FieldName NOT LIKE N'%Id' AND COALESCE(LK.ParsedLookupValueColumn, N'') IN (N'Name', N'Code', N'Key', N'Value') THEN N'ON base.lookupColumn = lookup.valueColumn'
|
||||
WHEN LJ.LookupJsonText IS NOT NULL OR F.FieldName LIKE N'%Id' THEN N'ON CONVERT(NVARCHAR(100), base.lookupColumn) = CONVERT(NVARCHAR(100), lookup.valueColumn)'
|
||||
END AS [lookupJoinRule],
|
||||
CONVERT(bit, CASE
|
||||
WHEN LJ.LookupJsonText IS NOT NULL
|
||||
AND F.FieldName NOT LIKE N'%Id'
|
||||
THEN 1 ELSE 0 END) AS [lookupFallbackToSourceColumn],
|
||||
CASE WHEN LJ.LookupJsonText IS NOT NULL THEN CONCAT_WS(N' ', F.FieldName, F.CaptionName, CAST(LT_CAP.[Value] AS NVARCHAR(MAX)), LJ.LookupJsonText, LJ.JoinTableJsonText) END AS [lookupSearchText],
|
||||
|
||||
CONVERT(bit, CASE WHEN F.FieldName IN (N'IsActive', N'IsEnabled', N'IsPublished') THEN 1 ELSE 0 END) AS [isActiveStatusColumn],
|
||||
CONVERT(bit, CASE WHEN F.FieldName IN (N'IsDeleted', N'Deleted', N'IsRemoved') THEN 1 ELSE 0 END) AS [isDeletedStatusColumn],
|
||||
COALESCE(
|
||||
CASE WHEN ISJSON(LJ.LookupJsonTextDecoded) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueExpr'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueField'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.keyField'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.keyFieldName')
|
||||
) END,
|
||||
LKP.ParsedLookupValueColumn
|
||||
) AS [lookupValueColumn],
|
||||
|
||||
COALESCE(
|
||||
CASE WHEN ISJSON(LJ.LookupJsonTextDecoded) = 1 THEN COALESCE(
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayExpr'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayField'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.textField'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.textColumn'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.nameField'),
|
||||
JSON_VALUE(LJ.LookupJsonTextDecoded, '$.nameColumn')
|
||||
) END,
|
||||
LKP.ParsedLookupDisplayColumn
|
||||
) AS [lookupDisplayColumn],
|
||||
|
||||
CASE
|
||||
WHEN LJ.LookupJsonTextDecoded IS NOT NULL AND F.FieldName NOT LIKE N'%Id'
|
||||
AND COALESCE(LKP.ParsedLookupValueColumn, N'') IN (N'Name', N'Code', N'Key', N'Value', N'key', N'value')
|
||||
THEN N'direct-string'
|
||||
WHEN LJ.LookupJsonTextDecoded IS NOT NULL AND F.FieldName NOT LIKE N'%Id'
|
||||
THEN N'direct-string'
|
||||
WHEN LJ.LookupJsonTextDecoded IS NOT NULL OR F.FieldName LIKE N'%Id'
|
||||
THEN N'convert-nvarchar-safe'
|
||||
END AS [lookupJoinMode],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN LJ.LookupJsonTextDecoded IS NOT NULL
|
||||
AND F.FieldName NOT LIKE N'%Id'
|
||||
THEN 1 ELSE 0
|
||||
END) AS [lookupFallbackToSourceColumn],
|
||||
|
||||
CASE
|
||||
WHEN LJ.LookupJsonTextDecoded IS NOT NULL
|
||||
THEN CONCAT_WS(N' ',
|
||||
F.FieldName,
|
||||
F.CaptionName,
|
||||
CAST(LT_CAP.[Value] AS NVARCHAR(MAX)),
|
||||
LJ.LookupJsonTextDecoded
|
||||
)
|
||||
END AS [lookupSearchText],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN F.FieldName IN (N'IsActive', N'IsEnabled', N'IsPublished')
|
||||
THEN 1 ELSE 0
|
||||
END) AS [isActiveStatusColumn],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN F.FieldName IN (N'IsDeleted', N'Deleted', N'IsRemoved')
|
||||
THEN 1 ELSE 0
|
||||
END) AS [isDeletedStatusColumn],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN F.FieldName LIKE N'%Password%'
|
||||
OR F.FieldName LIKE N'%ConnectionString%'
|
||||
|
|
@ -223,7 +203,9 @@ BEGIN
|
|||
OR F.FieldName LIKE N'%Secret%'
|
||||
OR F.FieldName LIKE N'%ApiKey%'
|
||||
OR F.FieldName LIKE N'%PrivateKey%'
|
||||
THEN 1 ELSE 0 END) AS [isSensitive],
|
||||
THEN 1 ELSE 0
|
||||
END) AS [isSensitive],
|
||||
|
||||
CONVERT(bit, CASE
|
||||
WHEN ISNULL(F.Visible, 1) = 1
|
||||
AND ISNULL(F.IsActive, 1) = 1
|
||||
|
|
@ -234,21 +216,14 @@ BEGIN
|
|||
AND F.FieldName NOT LIKE N'%ApiKey%'
|
||||
AND F.FieldName NOT LIKE N'%PrivateKey%'
|
||||
AND F.FieldName NOT IN (N'Avatar', N'ExtraProperties')
|
||||
THEN 1 ELSE 0 END) AS [isDefaultSelectColumn]
|
||||
THEN 1 ELSE 0
|
||||
END) AS [isDefaultSelectColumn]
|
||||
|
||||
FROM dbo.Sas_H_ListFormField F
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
LookupJsonText = NULLIF(LTRIM(RTRIM(CAST(F.LookupJson AS NVARCHAR(MAX)))), N''),
|
||||
JoinTableJsonText = NULLIF(LTRIM(RTRIM(CAST(F.JoinTableJson AS NVARCHAR(MAX)))), N'')
|
||||
) LJ
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP (1)
|
||||
SqlDataType = TYPE_NAME(C.user_type_id),
|
||||
SqlMaxLength = C.max_length,
|
||||
SqlPrecision = C.precision,
|
||||
SqlScale = C.scale
|
||||
SqlDataType = TYPE_NAME(C.user_type_id)
|
||||
FROM sys.schemas S
|
||||
INNER JOIN sys.tables TBL ON TBL.schema_id = S.schema_id
|
||||
INNER JOIN sys.columns C ON C.object_id = TBL.object_id
|
||||
|
|
@ -259,77 +234,120 @@ BEGIN
|
|||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
CleanLookupSql = NULLIF(
|
||||
LTRIM(RTRIM(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(CAST(F.LookupJson AS NVARCHAR(MAX)), N'\\u0022', N''),
|
||||
N'\u0022', N''),
|
||||
N'"', N''),
|
||||
N'"', N''),
|
||||
N'[', N''),
|
||||
N']', N''),
|
||||
N'`', N''),
|
||||
N'\', N''),
|
||||
CHAR(13) + CHAR(10), N' ')
|
||||
)),
|
||||
N'')
|
||||
) LKC
|
||||
LookupJsonTextRaw = NULLIF(LTRIM(RTRIM(CAST(F.LookupJson AS NVARCHAR(MAX)))), N'')
|
||||
) LJR
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
UpperLookupSql = UPPER(LKC.CleanLookupSql),
|
||||
FromPos = CHARINDEX(N' FROM ', UPPER(LKC.CleanLookupSql)),
|
||||
OrderPos = CHARINDEX(N' ORDER BY ', UPPER(LKC.CleanLookupSql)),
|
||||
WherePos = CHARINDEX(N' WHERE ', UPPER(LKC.CleanLookupSql)),
|
||||
GroupPos = CHARINDEX(N' GROUP BY ', UPPER(LKC.CleanLookupSql))
|
||||
) LKP
|
||||
LookupJsonTextDecoded = NULLIF(LTRIM(RTRIM(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
LJR.LookupJsonTextRaw,
|
||||
N'\\u0022', N'"'),
|
||||
N'\u0022', N'"'),
|
||||
N'\\u0027', N''''),
|
||||
N'\u0027', N''''),
|
||||
N'"', N'"')
|
||||
)), N'')
|
||||
) LJ
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
LookupQueryText = CASE
|
||||
WHEN ISJSON(LJ.LookupJsonTextDecoded) = 1
|
||||
THEN JSON_VALUE(LJ.LookupJsonTextDecoded, '$.LookupQuery')
|
||||
END
|
||||
) LQ
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
CleanLookupQuery = NULLIF(LTRIM(RTRIM(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
REPLACE(
|
||||
LQ.LookupQueryText,
|
||||
N'"', N''),
|
||||
N'[', N''),
|
||||
N']', N''),
|
||||
N'`', N''),
|
||||
NCHAR(13), N' '),
|
||||
NCHAR(10), N' '),
|
||||
NCHAR(9), N' '),
|
||||
N' ', N' ')
|
||||
)), N'')
|
||||
) LQC
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
FromPos = CHARINDEX(N' FROM ', UPPER(ISNULL(LQC.CleanLookupQuery, N''))),
|
||||
OrderPos = CHARINDEX(N' ORDER BY ', UPPER(ISNULL(LQC.CleanLookupQuery, N''))),
|
||||
WherePos = CHARINDEX(N' WHERE ', UPPER(ISNULL(LQC.CleanLookupQuery, N''))),
|
||||
GroupPos = CHARINDEX(N' GROUP BY ', UPPER(ISNULL(LQC.CleanLookupQuery, N''))),
|
||||
SelectPart = CASE
|
||||
WHEN CHARINDEX(N' FROM ', UPPER(ISNULL(LQC.CleanLookupQuery, N''))) > 0
|
||||
THEN LTRIM(RTRIM(SUBSTRING(
|
||||
LQC.CleanLookupQuery,
|
||||
7,
|
||||
CHARINDEX(N' FROM ', UPPER(LQC.CleanLookupQuery)) - 7
|
||||
)))
|
||||
END
|
||||
) LQP
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
StopPos = CASE
|
||||
WHEN LKP.FromPos <= 0 THEN 0
|
||||
WHEN LKP.WherePos > LKP.FromPos THEN LKP.WherePos
|
||||
WHEN LKP.GroupPos > LKP.FromPos THEN LKP.GroupPos
|
||||
WHEN LKP.OrderPos > LKP.FromPos THEN LKP.OrderPos
|
||||
ELSE LEN(LKC.CleanLookupSql) + 1
|
||||
WHEN LQP.FromPos <= 0 THEN 0
|
||||
WHEN LQP.WherePos > LQP.FromPos THEN LQP.WherePos
|
||||
WHEN LQP.GroupPos > LQP.FromPos THEN LQP.GroupPos
|
||||
WHEN LQP.OrderPos > LQP.FromPos THEN LQP.OrderPos
|
||||
ELSE LEN(LQC.CleanLookupQuery) + 1
|
||||
END
|
||||
) LQS
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
ParsedLookupTableName = CASE
|
||||
WHEN LQP.FromPos > 0 AND LQS.StopPos > LQP.FromPos
|
||||
THEN NULLIF(REPLACE(REPLACE(LEFT(
|
||||
LTRIM(RTRIM(SUBSTRING(
|
||||
LQC.CleanLookupQuery,
|
||||
LQP.FromPos + 6,
|
||||
LQS.StopPos - (LQP.FromPos + 6)
|
||||
))),
|
||||
CHARINDEX(N' ', LTRIM(RTRIM(SUBSTRING(
|
||||
LQC.CleanLookupQuery,
|
||||
LQP.FromPos + 6,
|
||||
LQS.StopPos - (LQP.FromPos + 6)
|
||||
))) + N' ') - 1
|
||||
), N'dbo.', N''), N'DBO.', N''), N'')
|
||||
END,
|
||||
SelectPart = CASE WHEN LKP.FromPos > 0 THEN LTRIM(RTRIM(SUBSTRING(LKC.CleanLookupSql, 7, LKP.FromPos - 7))) END
|
||||
) LKS
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
TablePart = CASE WHEN LKP.FromPos > 0 AND LKS.StopPos > LKP.FromPos
|
||||
THEN LTRIM(RTRIM(SUBSTRING(LKC.CleanLookupSql, LKP.FromPos + 6, LKS.StopPos - (LKP.FromPos + 6))))
|
||||
END,
|
||||
KeyAsPos = CHARINDEX(N' AS KEY', UPPER(ISNULL(LKS.SelectPart, N''))),
|
||||
NameAsPos = CHARINDEX(N' AS NAME', UPPER(ISNULL(LKS.SelectPart, N'')))
|
||||
) LKT
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
ParsedLookupTableName = NULLIF(REPLACE(REPLACE(LEFT(LKT.TablePart, CHARINDEX(N' ', LKT.TablePart + N' ') - 1), N'dbo.', N''), N'DBO.', N''), N''),
|
||||
KeyExprChunk = CASE WHEN LKT.KeyAsPos > 0 THEN LTRIM(RTRIM(SUBSTRING(LKS.SelectPart, 1, LKT.KeyAsPos - 1))) END,
|
||||
NameExprChunk = CASE WHEN LKT.NameAsPos > 0 THEN LTRIM(RTRIM(SUBSTRING(LKS.SelectPart, 1, LKT.NameAsPos - 1))) END
|
||||
) LKE
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
ParsedLookupValueColumn = NULLIF(LTRIM(RTRIM(REPLACE(REPLACE(
|
||||
CASE WHEN LKE.KeyExprChunk IS NOT NULL THEN
|
||||
RIGHT(LKE.KeyExprChunk, CHARINDEX(N',', REVERSE(LKE.KeyExprChunk) + N',') - 1)
|
||||
END, N'SELECT', N''), N'select', N''))), N''),
|
||||
ParsedLookupDisplayColumn = NULLIF(LTRIM(RTRIM(REPLACE(REPLACE(
|
||||
CASE WHEN LKE.NameExprChunk IS NOT NULL THEN
|
||||
RIGHT(LKE.NameExprChunk, CHARINDEX(N',', REVERSE(LKE.NameExprChunk) + N',') - 1)
|
||||
END, N'SELECT', N''), N'select', N''))), N'')
|
||||
) LK
|
||||
ParsedLookupValueColumn = COALESCE(
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.ValueExpr'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueExpr'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueField'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.valueColumn'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.keyField'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.keyFieldName'), N'')
|
||||
),
|
||||
ParsedLookupDisplayColumn = COALESCE(
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.DisplayExpr'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayExpr'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayField'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.displayColumn'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.textField'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.textColumn'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.nameField'), N''),
|
||||
NULLIF(JSON_VALUE(LJ.LookupJsonTextDecoded, '$.nameColumn'), N'')
|
||||
)
|
||||
) LKP
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP (1) LT.[Value]
|
||||
|
|
@ -357,6 +375,7 @@ BEGIN
|
|||
FROM ListFormSource L
|
||||
ORDER BY L.ListFormCode
|
||||
FOR JSON PATH, ROOT('listForms')
|
||||
) AS ListFormDataDictionaryJson;
|
||||
)
|
||||
AS NVARCHAR(MAX)) AS ListFormDataDictionaryJson;
|
||||
END
|
||||
GO
|
||||
|
|
@ -1542,7 +1542,7 @@ public class PlatformDbContext :
|
|||
b.Property(x => x.ResourceName).HasMaxLength(64);
|
||||
b.Property(x => x.MaxForms).HasDefaultValue(500);
|
||||
b.Property(x => x.CacheKey).HasMaxLength(512).IsRequired();
|
||||
b.Property(x => x.JsonData).IsRequired();
|
||||
b.Property(x => x.JsonData).IsRequired().HasColumnType("text");
|
||||
b.Property(x => x.FormCount).HasDefaultValue(0);
|
||||
b.Property(x => x.FieldCount).HasDefaultValue(0);
|
||||
b.Property(x => x.JsonLength).HasDefaultValue(0);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
|
|||
namespace Sozsoft.Platform.Migrations
|
||||
{
|
||||
[DbContext(typeof(PlatformDbContext))]
|
||||
[Migration("20260624135753_Initial")]
|
||||
[Migration("20260624175615_Initial")]
|
||||
partial class Initial
|
||||
{
|
||||
/// <inheritdoc />
|
||||
|
|
@ -2005,7 +2005,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.Property<string>("JsonData")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("JsonLength")
|
||||
.ValueGeneratedOnAdd()
|
||||
|
|
@ -1209,7 +1209,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
ResourceName = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
|
||||
MaxForms = table.Column<int>(type: "int", nullable: false, defaultValue: 500),
|
||||
CacheKey = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: false),
|
||||
JsonData = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||
JsonData = table.Column<string>(type: "text", nullable: false),
|
||||
FormCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
|
||||
FieldCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
|
||||
JsonLength = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
|
||||
|
|
@ -2002,7 +2002,7 @@ namespace Sozsoft.Platform.Migrations
|
|||
|
||||
b.Property<string>("JsonData")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("JsonLength")
|
||||
.ValueGeneratedOnAdd()
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
3
configs/ai/Kurulum.txt
Normal file
3
configs/ai/Kurulum.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
docker exec -it ollama ollama list
|
||||
docker exec -it ollama ollama pull qwen2.5:3b
|
||||
docker exec -it ollama ollama pull gemma3:4b
|
||||
|
|
@ -428,7 +428,7 @@ const Assistant = () => {
|
|||
+
|
||||
</span>
|
||||
</summary>
|
||||
<pre className="mt-3 max-h-48 overflow-auto rounded-lg bg-gray-950 p-3 text-xs leading-5 text-emerald-100">
|
||||
<pre className="mt-3 max-h-48 overflow-auto rounded-lg bg-gray-950 p-3 text-xs leading-5 text-emerald-100 [scrollbar-color:#6b7280_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-500 [&::-webkit-scrollbar-thumb:hover]:bg-gray-400 [&::-webkit-scrollbar-track]:bg-transparent">
|
||||
<code>{cleanedSql}</code>
|
||||
</pre>
|
||||
</details>
|
||||
|
|
@ -439,7 +439,7 @@ const Assistant = () => {
|
|||
Sonuç bulunamadı.
|
||||
</div>
|
||||
) : (
|
||||
<div className="max-h-[400px] overflow-auto">
|
||||
<div className="max-h-[400px] overflow-auto pb-1 [scrollbar-color:#6b7280_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-gray-400 [&::-webkit-scrollbar-thumb:hover]:bg-gray-500 [&::-webkit-scrollbar-track]:bg-transparent dark:[scrollbar-color:#6b7280_transparent] dark:[&::-webkit-scrollbar-thumb]:bg-gray-500 dark:[&::-webkit-scrollbar-thumb:hover]:bg-gray-400">
|
||||
<table className="w-full min-w-max text-sm">
|
||||
<thead className="sticky top-0 z-10 bg-gray-800 text-xs tracking-wide text-gray-100 shadow-sm dark:bg-gray-950">
|
||||
<tr>
|
||||
|
|
@ -730,7 +730,7 @@ const Assistant = () => {
|
|||
)}
|
||||
</div>
|
||||
<div
|
||||
className={`max-w-[80%] min-w-0 rounded-lg p-2 ${msg.role === 'user' ? 'bg-blue-500 text-white' : 'bg-white text-gray-800 dark:bg-gray-800 dark:text-gray-100'}`}
|
||||
className={`max-w-[90%] min-w-0 rounded-lg p-2 ${msg.role === 'user' ? 'bg-blue-500 text-white' : 'bg-white text-gray-800 dark:bg-gray-800 dark:text-gray-100'}`}
|
||||
>
|
||||
<div className="flex flex-col gap-1">
|
||||
{renderMessageContent(msg)}
|
||||
|
|
|
|||
Loading…
Reference in a new issue